Tag: 互斥锁

当只有一个线程写入共享变量时,是否需要锁定?

我有2个线程和一个共享的float全局。 一个线程只写入变量,而另一个线程只读取它,我是否需要锁定对此变量的访问? 换一种说法: volatile float x; void reader_thread() { while (1) { // Grab mutex here? float local_x = x; // Release mutex? do_stuff_with_value(local_x); } } void writer_thread() { while (1) { float local_x = get_new_value_from_somewhere(); // Grab mutex here? x = local_x; // Release mutex? } } 我主要担心的是float的加载或存储不是primefaces的,因此local_x中的reader_thread最终会出现虚假,部分更新的值。 这是一个有效的问题吗? 是否有另一种方法可以在没有互斥锁的情况下保证primefaces性? 使用sig_atomic_t作为共享变量是否可行,假设它有足够的位用于我的目的? 有问题的语言是使用pthreads的C.

pthread_mutex_lock返回无效参数

我正在研究一些C代码,并且遇到锁定互斥锁的问题。 代码调用一个函数,这个函数锁定一个互斥锁,以确保文件指针不被覆盖,这适用于几个实例,可能大约10-20个单独调用被调用函数,但在下一次调用时,pthread_mutex_lock将返回22的结果。然后我将此结果放入strerror(); 并得到了无效的论点。 无效参数意味着什么,感谢您提供的任何帮助。