2012-09-24 140 views
0

(1)在多線程進程中,如果一個線程忙於I/O,整個進程是否會被阻塞?多線程,阻塞和信號量

(2)哪個更適合使用互斥鎖或二進制信號量?什麼時候應該使用互斥體,什麼時候應該使用二進制信號量?

+0

號互斥由特定的線程擁有,信號量是沒有的。 –

+0

1)第2)你應該幾乎總是使用互斥量而不是信號量。 –

回答

1

1)。那麼,一次只有一個線程被分配給多線程應用程序中的CPU。如果你說你的線程經常忙於I/O,那麼實際上可能會發生所有其他線程一直在隊列中等待CPU分配給它們的情況。這取決於所使用的CPU allocation algorithm。如果線程正在使用Time-Sharing算法,那麼當然在完成時間後,當前線程將被髮送到隊列的後面。 2)。看看這篇文章: - Difference between binary semaphore and mutex

+0

非常感謝。它解決了我的疑問 – Laavaa

+0

@Abhishek ..你是歡迎..如果你的問題解決了,你可以接受它作爲回答標記這個問題解決.. –

+1

通常,執行I/O操作允許其他線程準備運行獲得CPU,(當然在任何具有搶先調度器的操作系統上,即幾乎所有的操作系​​統)。 –

0

1)在SMP環境中,多個線程可以並行運行(在不同的cpu上)。在單個CPU環境中,一次只能運行一個線程。

2)閱讀本diff-binary-semaphore-and-mutex