- 394 名前:デフォルトの名無しさん [2008/02/29(金) 20:34:51 ]
- 環境はC言語、Solaris、Sunコンパイラです。
マルチスレッドで動作する関数内で ある条件下で動作する処理Aと処理Bがあります。 AとBはクリティカルセクションを使用しています。 それぞれ実行する前後にpthread_mutexを使い排他しました。 これは問題なく動作できているのですが、 処理B自体は排他する必要がなく、処理Bを平行に動かしたいのですが うまくいきません。 セマフォを使ってできると思ったんですが・・・ 何かよい方法があったら教えてください //mutex(初期化は省略) pthread_mutex_t *mutex /* マルチスレッドで動作させる関数 */ void Func(){ if( 条件 ){ pthread_mutex_lock(mutex); A(); pthread_mutex_unlock(mutex); } pthread_mutex_lock(mutex); B(); pthread_mutex_unlock(mutex); }
|

|