10得票5回答
互斥锁的存在有助于消除volatile关键字吗?

我有一个多读写锁类,它维护了读、写以及待处理的读取和待处理的写入计数器。一个互斥量用于防止多个线程同时访问它们。 我的问题是:我们是否仍需将计数器声明为volatile,以便编译器在进行优化时不会出错。 或者编译器是否考虑到这些计数器被互斥量保护。 我知道互斥量是一种运行时机制,用于同步...

7得票2回答
C#互斥对象 - 在ASP.NET和控制台应用程序中调用时出错

我正在使用一个名为“Global”的互斥体来同步ASP.NET应用程序和控制台应用程序之间的文件访问。当运行ASP.NET应用程序时,控制台应用程序无法获取互斥体 - 这是预期的。当运行控制台应用程序时,ASP.NET应用程序会抛出UnauthorizedAccessException: Ac...

29得票8回答
标准C++中的共享递归互斥锁

计划在C++17中推出一个shared_mutex类,而shared_timed_mutex已在C++14中推出(谁知道它们为什么以那个顺序出现,但无论如何)。然后自C++11起就有了recursive_mutex和recursive_timed_mutex。我需要的是一个shared_rec...

7得票3回答
机器休眠 + WaitForSingleObject + 有限超时时间

这里有一个奇怪的问题 - 但是: 如果我在一个互斥量上使用20分钟超时的WaitForSingleObject。然后,当等待时,机器进入睡眠模式(或休眠).... 12小时后唤醒 - 我的WaitForSingleObject调用会超时吗?还是计时器会随着机器睡眠而暂停?

16得票8回答
获取函数需要互斥锁吗?

我有一个被多个线程访问的类。其getter和setter函数都受到锁的保护。 那么,getter函数真的需要使用锁吗?如果需要,原因是什么?class foo { public: void setCount (int count) { boost::lock_guar...

9得票4回答
C++中的互斥锁是否必须绑定到某个对象或变量?

我对线程有点陌生,正在尝试理解如何在C++11中使用它。我的教授给了我们这个示例代码来演示互斥锁的使用:#include <list> #include <mutex> #include <algorithm> std::list<int>...

7得票2回答
如何使用信号量实现条件变量?

前段时间我考虑如何利用互相之间的同步原语来实现各种同步方法。比如,使用pthread库可以获取互斥锁和条件变量,然后通过这些构建信号量。 在Windows API中(至少是旧版本的Windows API),有互斥锁和信号量,但没有条件变量。我认为应该通过互斥锁和信号量来构建条件变量,但是我就...

163得票9回答
return语句应该放在锁的内部还是外部?

我刚刚意识到在我的代码中,有些地方return语句在锁的内部,有些则在外部。哪种方式最好?void example() { lock (mutex) { //... } return myData; } void example() { lock...

15得票4回答
为什么在线程同步时要使用互斥锁而不是布尔变量?

我正在尝试理解C语言中的多线程编程。 我有一个疑问,既然我们使用MUTEXES进行线程同步,为什么不能使用布尔变量来阻塞代码的关键区域以便执行。 MUTEX与布尔变量相比有什么特别之处? PS:实际上这个问题是在一次面试中被问到的。请分享您对此的知识。

28得票5回答
PHP互斥锁(mutex)

阅读一些关于PHP中锁定的文本。 它们主要指向http://php.net/manual/en/function.flock.php。 这个页面谈论了如何在硬盘上打开一个文件! 真的是这样吗?我的意思是,这使得锁定变得非常昂贵-这意味着每次想要锁定时都必须访问硬盘)= 还有人能告诉我令人...