台北市网站建设_网站建设公司_云服务器_seo优化
2026/1/8 3:48:03 网站建设 项目流程

前言:

kill_dependency没啥用,本篇可以一扫而过

1、标准描述

Thekill_dependencymacro serves to terminate a dependency chain.


2、定义

2.1、在gcc中的定义

#define kill_dependency(Y) \ __extension__ \ ({ \ __auto_type __kill_dependency_tmp = (Y); \ __kill_dependency_tmp; \ })

2.2、在clang中的定义

#define kill_dependency(y) (y)

3、汇编代码分析

3.1、与赋值操作(=)结果一致

gcc -S 编译如下代码获得汇编代码

_Atomic int a = ATOMIC_VAR_INIT(1), b; //如下两句代码汇编代码基本一致 b = kill_dependency(a); b = (a);

上述代码汇编表明,在对原子变量ab进行操作时,使用kill_dependency宏与直接赋值操作(=)所得到的结果是相同的。

3.2、与普通变量赋值进行比较

gcc -S 编译如下代码获得汇编代码

int aa = 1, bb; bb = aa;

通过查看汇编,对原子变量进行赋值操作(kill_dependency)时,在x86_64系统中使用了mfence指令;在arm64系统中使用了ldar/stlr指令。这些指令用于内存屏障及内存操作的顺序性。

4、小结

4.1、kill_dependency宏在实际应用中基本未被广泛使用,在kernel、gcc、glibc、bionic以及systemd等项目中均未发现其使用痕迹。
4.2、在大多数情况下,直接使用赋值操作(=)就能够满足需求,无需额外使用kill_dependency宏。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询