g_atomic_int_add
是GLib库中的一个函数,用于原子地将一个整数值添加到指定的原子整型变量中。该函数的声明如下:
gint g_atomic_int_add(volatile gint *atomic, gint val);
参数说明:
atomic
:指向要进行原子操作的整型变量的指针。val
:要添加到原子变量上的值。
该函数会将给定的整数值 val
添加到原子变量 atomic
中,并返回新的结果。在多线程环境下,此操作是原子性的,即保证了并发访问时数据一致性和线程安全。
以下是一个示例代码:
#include <glib.h>
volatile gint counter = 0;
void increment_counter() {
g_atomic_int_add(&counter, 1);
}
int main() {
// 创建多个线程递增计数器
for (int i = 0; i < 10; i++) {
g_thread_new(NULL, (GThreadFunc)increment_counter, NULL);
}
// 等待所有线程执行完成
g_usleep(100000);
// 打印最终计数器值
g_print("Counter: %d\n", counter);
return 0;
}
在上述示例中,使用g_atomic_int_add
函数来保证对共享计数器变量 counter
的原子递增操作。这样可以避免多个线程同时对其进行修改而导致竞态条件或数据不一致的问题。
内容由零声教学AI助手提供,问题来源于学员提问