2016-06-14 66 views
1

信號量和互斥信號是否同步線程和進程,或者只有線程或只有進程?信號量和互斥行爲的疑惑

編輯:我的錯誤是C,而不是殼。由於我通過shell編程,所以我誤會了它。還有一件事:通信和同步是一樣的嗎?

+1

你在說什麼「shell」互斥/信號量機制?一般來說,shell不提供這些功能。 Shell確實提供了可用於實現互斥鎖的某些功能的文件鎖定。但目前尚不清楚你指的是什麼。 – kaylum

+0

我的壞..這是C不是殼 –

+1

可能重複[信號量和互斥量的線程和進程同步](http://stackoverflow.com/questions/12251701/semaphores-and-mutex-for-thread-and-process-同步) – kaylum

回答

1

SysV IPC semaphores進程之間的同步。

使用POSIX信號量,您可以通過pshared參數選擇sem_init(3)使用pshared = 1,您可以在所有可以訪問共享內存區域的所有任務(可能包括線程和進程)之間進行同步,信號量在。

Pthread mutexes工作在線程上。 (Pthreads也有條件變量,在功能上等同於信號量)。

線程版本可以有更好的性能,因爲它是可以管理共享計數器的進程,而使用信號量,內核必須這樣做。

同步是關於確定一項任務是否可以繼續或者必須與其他任務協調一致,並且它涉及通信,例如通過遞增和遞減在任務之間共享的信號量。