在 pthread 等待之前,我们使用互斥锁进行锁定,这样其他代码可能不会尝试更改条件变量。wait 然后解锁互斥锁并等待信号。
说,在其他一些线程中,我锁定了同一个互斥锁,之后,我使用了“信号”。然后解锁线程。当信号完成时,等待线程唤醒并再次获取互斥锁。
Thread1 Thread2
{ {
lock(mutex); lock(mutex);
wait(mutex); signal(mutex);
unlock(mutex); unlock(mutex);
} }
假设三个线程一语句包含在 while(1) 循环中。然后假设 thread2 锁定互斥体,向它发出信号,然后解锁互斥体。然后没有结束,而是进入睡眠状态。
那么条件变量的值会永久改变吗?如果线程一的三个语句在无限循环中运行,它会不会永远等待,只是发现信号已经发出?当等待调用返回时,它是否将条件变量的值设置回初始值?
如果是,我可以对变量使用创建、销毁或初始化方法来设置值吗?如果是,如何?这些函数具体是做什么的?
谢谢,