0
我有一個關於C中多進程編程的問題,我有幾個讀取器進程將從一個文件讀入一個共享緩衝區,幾個寫入進程從緩衝區讀取到另一個文件中,什麼類型的信號量我們需要爲此使用嗎?以及我們如何使用共享內存與信號量。信號量和共享內存
我有一個關於C中多進程編程的問題,我有幾個讀取器進程將從一個文件讀入一個共享緩衝區,幾個寫入進程從緩衝區讀取到另一個文件中,什麼類型的信號量我們需要爲此使用嗎?以及我們如何使用共享內存與信號量。信號量和共享內存
如果你在linux上,一個簡單的選擇是使用pshared mutexes和條件變量。 glibc的recet版本將是必要的。基本上你的共享內存段裏面,你會碰到這樣的:
struct shmem_head {
pthread_mutex_t mutex;
};
初始化:
void init_shmem_head(struct shmem_head *head)
{
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
pthread_mutex_init(&head->mutex, &attr);
pthread_mutexattr_destroy(&head->mutex);
}
你現在有一個互斥體,通過共享內存段開放所有進程共享。您可以簡單地使用pthread_mutex_lock
鎖定並且pthread_mutex_unlock
以正常方式解鎖。如果你想要條件變量,也有類似的pthread_condattr_setpshared
。
什麼操作系統?你使用任何多處理特定的庫? – nmichaels
的Linux這裏都是我包括在該文件的標題, 的#include 的#include 的#include 的#include 的#include 的#include 的#include 的#include 的#include #include #include 希望這有助於 –
MRK