我有一个互斥锁来控制多个线程对单个对象的访问。当一个线程完成后,互斥锁被解锁,以允许其他线程操作该对象。在Windows上使用WaitForSingleObject函数时,线程的信号顺序是有序的吗?我希望第一个尝试锁定互斥锁的线程现在能够锁定互斥锁。这将是一个先进先出(FIFO)队列,以使对被阻塞线程的信号不是随机发生的。我需要实现自己的排队机制来实现这一点吗?如果需要,哪些函数是有用的?
我有一个互斥锁来控制多个线程对单个对象的访问。当一个线程完成后,互斥锁被解锁,以允许其他线程操作该对象。在Windows上使用WaitForSingleObject函数时,线程的信号顺序是有序的吗?我希望第一个尝试锁定互斥锁的线程现在能够锁定互斥锁。这将是一个先进先出(FIFO)队列,以使对被阻塞线程的信号不是随机发生的。我需要实现自己的排队机制来实现这一点吗?如果需要,哪些函数是有用的?
如果你想要一个FIFO队列,那么你需要实现自己的排队机制。
实现自己的调度程序在 Windows 上可以使用纤程(Fibers)的方式。主线程将等待互斥量,一旦返回,您需要在一个线程安全的队列中显式地调用 SwitchToFiber。