簡體   English   中英

使用C中的信號量和共享內存的Reader-Writer

[英]Reader-Writer using semaphores and shared memory in C

我正在嘗試使用名為信號量的POSIX創建一個簡單的讀取器/寫入器程序,但該程序可以正常工作,但是在某些系統上,它在第一個信號量上立即停止運行,就這樣了……我現在真的很絕望。 有人可以幫忙嗎? 它在我的系統上工作正常,因此我無法通過ltrace跟蹤問題。 (對不起,我來自捷克共和國)

https://www.dropbox.com/s/hfcp44u2r0jd7fy/readerWriter.c

POSIX信號量不是很適合應用程序代碼,因為它們是可中斷的。 基本上,任何類型的IO都會干擾您的信號。 請看一下這篇文章

因此,您必須非常小心地正確解釋sem_函數的所有錯誤返回。 在您發布的代碼中沒有這樣的東西。

如果您的POSIX實現支持它們,則只需使用rwlocks,它們就是為此而設計的,具有更高的級別,並且不會遇到這種困難。

在計算機科學中,讀​​者-作家問題是並發性常見計算問題的示例。 問題至少有三種變體,它們涉及許多線程試圖一次訪問同一共享內存的情況。 一些線程可能會讀取而某些線程可能會寫入,其約束是,沒有進程可以訪問共享進行讀取或寫入,而另一個進程處於寫入狀態。 (特別是允許兩個或多個讀取器同時訪問共享。)讀取器-寫入器鎖是一種數據結構,可以解決一個或多個讀取器-寫入器的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM