为了实现多线程访问一个全局变量 g
,并使用原子操作 __sync_bool_compare_and_swap
来避免多线程并发冲突,可以按照以下方式编写 C 代码。
假设我们有一个全局变量 g
表示某种状态,我们需要在多线程环境中安全地更新它。
代码解释:
- 全局变量
g
:声明为volatile
以防止编译器优化导致的不可预测行为。 - 线程函数
thread_func
:每个线程执行的函数,尝试使用__sync_bool_compare_and_swap
原子操作更新g
。如果操作成功,则打印成功消息;否则,打印失败消息。 - 创建线程:使用
pthread_create
创建多个线程。 - 等待线程完成:使用
pthread_join
等待所有线程完成。
这个示例展示了如何在多线程环境中使用 __sync_bool_compare_and_swap
原子操作安全地更新全局变量 g
,避免数据竞争和并发冲突。