2011-06-20 28 views
0

Cからマルチプロセスプログラミングに関する質問があります。ファイルから共有バッファに読み込みを行う読者プロセスがいくつかあり、バッファから別のファイルに読み込み中の複数のプロセスがあります。どのタイプのセマフォこれに使用する必要があります。どのようにセマフォと共有メモリを使用することができます。セマフォと共有メモリ

+1

どのオペレーティングシステムですか?マルチプロセッシング固有のライブラリを使用していますか? – nmichaels

+0

のlinuxここで私は、ファイルに含まれるすべてのヘッダー、 の#include の#includeがある の#include の#include の#include の#include の#include の#include の#include #include #include 希望する – MRK

答えて

1

Linuxの場合は、pshared mutexesと条件変数を使用するのが簡単です。 glibcのrecetバージョンが必要になります。あなたは今、共有メモリ・セグメントのオープンですべてのプロセスで共有、ミューテックスを持って

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); 
} 

:初期化するために

struct shmem_head { 
    pthread_mutex_t mutex; 
}; 

:基本的に共有メモリ・セグメント内のあなたのような何かを持っています。ロックする場合はpthread_mutex_lockを、通常どおりロックする場合はpthread_mutex_unlockを使用します。条件変数も必要ならば同様のpthread_condattr_setpsharedがあります。

関連する問題