- socket(by AF_UNIX)
- pipe or fifo
- file
- shared memory
- mmap (我覺得可以歸類到file)
- message queue (不會用XD)
[註1] 若沒有使用 semaphore,印出來的結果會有重複的內容出現。
[註2] semaphore 是另外包裝的一組 API,提供七個函式,如下:
- sem_create - 產生 semaphore,並設定初值。
- sem_open - 開啟 semaphore,前題以執行過。
- sem_rm - 刪除 semaphore,給 sem_close 使用。
- sem_close - 關閉 semaphore,並做刪除(sem_rm)。
- sem_op - 給 sem_wait、sem_signal 使用。
- sem_wait - semaphore--。
- sem_signal - semaphore++。
3 則留言:
不好意思 我剛剛在查詢的時候發現你的文章剛好想問一個問題
race condition 和 同步問題之間的差異在哪
我知道前者的意思是 如果不對共享變數作互斥機制 就會造成結果會不一樣
但後者的意思不是說 process執行時會因為某些事情的發生被迫中斷 必須等其他process做完某件事後 才可以繼續執行
這不就是一樣的意思嗎
兩個都是在存取共享變數時,只能有一個進行運作 不知道兩者差異在哪 謝謝
同步不會用到變數。它只是代表要等一些工作完成。像是火車進站控制,要等有火車出站,下一班車才能進站。這種算是現實問題互斥就是用同步來解。但工作間沒有存取共享變數。
To安東尼:
我覺得這只是兩個不同的字眼,在說明同一種概念,只不過,同步問題解釋的格局比較大,但兩者都是為了讓資源,以你認為正確的方式去分配。
張貼留言