8得票1回答
pthread_cond_timedwait在GHC FFI中无法返回

我尝试实现了Haskell的Control.Concurrent.MVar,它驻留在共享内存中,并允许使用POSIX功能在多个独立进程/程序之间通信。但是我在这方面遇到了很多死锁问题。 问题在于,在GHC FFI中调用pthread_cond_timedwait有时不会返回(无论是inter...

8得票2回答
能否实现C++11互斥锁概念以供std::condition_variable使用?

我发现Visual Studio 2013中的std::mutex实现过于缓慢。它使用重量级互斥锁,以确保即使在进程之间也可以实现同步,这很好,但是如果您不与其他进程通信并且确实需要Win32上CRITICAL_SECTION所提供的额外速度,则会有问题。 我尝试实现了一个fast_recu...

15得票2回答
使用std::mutex、std::condition_variable和std::unique_lock

我在理解条件变量及其与互斥锁的使用方面遇到了一些困难,希望社区能够帮助我。请注意,我来自win32背景,所以我习惯于使用CRITICAL_SECTION、HANDLE、SetEvent、WaitForMultipleObject等。这是我使用c++11标准库尝试并发编程的第一次尝试,它是一个修...

9得票2回答
使用 Async Await 实现全局互斥锁

我有一段关键的代码,只能由一个进程运行。为了确保机器上只有一个进程运行这个关键块,我使用一个全局互斥锁(Mutex)。关键部分的代码使用了async/await。总体来说,代码大致如下: var mutex = new Mutex(false, @"Global\MyMutexName");...

7得票2回答
在Linux内核中,为什么互斥锁不能在底半部获取?

我正在阅读《Linux内核开发》并对互斥锁(mutex)和信号量(semaphore)之间的区别感到困惑。 作者说: “互斥锁不能被中断处理程序或底半部获取” 我知道互斥锁可能导致休眠,而中断处理程序并没有运行在任何特定的进程上下文中,因此互斥锁或信号量不被允许。但是可以使用工作队列来...

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

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

29得票5回答
将std::lock_guard包裹在额外的作用域中以减小临界区的大小,这样做是否有意义呢?

把std::lock_guard放在额外的作用域中,以使锁定时间尽可能短,这样做有意义吗? 伪代码: // all used variables beside the lock_guard are created and initialized somewhere else ...// d...

8得票5回答
WaitForSingleObject - 线程等待是否形成队列?

如果我设置3个线程等待互斥锁被释放,它们会根据请求顺序排成队列,还是行为未定义(即我们不知道哪一个先获得)?

9得票2回答
互斥锁、信号量和读写锁有什么区别?

如果有实时场景举例解释每个问题将会很有帮助。 除了pthread中的这些方法,是否还有其他处理同步的方式? 互斥锁与递归锁有什么不同(任何实时场景)?

30得票10回答
C++线程,共享数据

我有一个应用程序,其中有2个线程正在运行... 当我从一个线程更改全局变量时,另一个线程会注意到这个变化吗?我没有任何同步或互斥系统... 但是如果代码像下面这样使用(想象一个名为 dataUpdated 的全局 bool ): 线程1:while(1) { if (dataUpda...