好的..这里是这个问题的一些背景。我有一些我试图用互斥锁保护的“关键”代码。它是这样的
互斥锁()
// 关键代码 // 一些文件 IO
互斥锁()。
现在的问题是我的程序似乎因此而“卡住”了。让我用一个例子来解释。
Thread_1 进来;然后转到 Mutex.Lock() 并开始执行关键代码。在关键代码中;它需要做一些文件 IO。现在在这一点上;我相信会发生“上下文切换”并且 Thread_2 进入并阻塞 Mutex.Lock() (因为 Thread_1 有锁)。一切似乎都很好,但就我而言;程序在这里“挂起”。我唯一能想到的是,不知何故 Thread_2 一直阻塞并且不会切换回 Thread_1?
更多信息:在 linux 上使用 pthread_mutex_init 和 pthread_mutex_lock。