簡體   English   中英

c中使用信號量的兩個進程之間的同步

[英]Synchronization between two processes using semaphores in c

我有一個任務,我必須用 C 語言編寫一個程序來管理文件的訪問和讀/寫。

當程序啟動時,它應該創建兩個進程(使用 fork())。

- 第一個進程將負責初始寫入文件(該文件是一個文本文件,從a到z有2000個隨機字符)。

- 在第一個進程完成寫入后,第二個進程將負責從文件中讀取。

我的問題是:

如何通過semaphores(sem() call system)同步執行順序,保證第一個進程總是先啟動,第二個進程只在第一個進程寫完后才啟動?

我可以推薦使用二進制信號量:// https://www.freertos.org/xSemaphoreCreateBinary.html

https://controllerstech.com/how-to-use-binary-semaphore-in-stm32/

如果您在嵌入式環境中工作,我建議您使用 Tasknotification,因為它們不太需要內存,因此可能更適合功能較弱的系統。 https://www.freertos.org/RTOS-task-notifications.html

信號量通過fork()繼承。 ( POSIX.1-2017 )

因此,一種簡單的方法是在讀取器存在之前將信號量初始化為零, fork()子讀取器,它在讀取之前等待信號量。 當父 writer 完成時,它發布信號量,釋放孩子。

暫無
暫無

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

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