1
void main()
{
.....
pthread_mutex_init(&lock)
pthread_create(fun,...)
pthread_create(fun,...)
pthread_create(fun,...)
}
void fun()
{
pthread_mutex_lock(&lock)
...........
pthread_mutex_unlock(&lock)
}
在上面的代碼中,我創建了3個線程調用相同的函數fun。我可以告訴你,有趣的執行需要比創建線程更長的時間。所以最初有3個線程。但第一個線程在鎖定後已經在執行。現在第二和第三個線程正在等待。我的問題是一旦鎖定被釋放,哪個線程將被安排。它是第二個線程,然後是第三個或取決於調度程序。調度程序是否爲等待的線程維護任何類型的隊列並以FIFO方式進行調度?在第一個線程退出後哪個線程被調度?
謝謝。在第一個線程退出後,是否立即調度第二個線程? – Harsha
你必須自己實現一個公平的互斥鎖。它可以通過使用標準互斥來完成。另請參閱:http://stackoverflow.com/questions/5385777/implementing-a-fifo-mutex-in-pthreads – redneb