linuxスレッドメモ
1232 ワード
3つのスレッド同期メカニズム
•反発ロック
•信号量
•条件変数
しゅかんすう
pthread_create(),pthread_exit(),pthread_join(),pthread_cancel()
反発ロックには、主に次の基本関数が含まれます.
反発ロック初期化:pthread_mutex_init()
反発ロックロック:pthread_mutex_lock()
反発ロック判定ロック:pthread_mutex_trylock()
反発ロック解除:pthread_mutex_unlock()
反発ロックの解除:pthread_mutex_destroy()
しんごうりょう
オペレーティングシステムで使用されるPV原子操作は、プロセスまたはスレッド間の同期と反発に広く用いられている.
•本質的には、パブリックリソースへのアクセスを制御するために使用される非負の整数カウンタ
PV原子操作:整数カウンタ信号量semに対する操作
•一度のP操作でsemを1つ減らし、一度のV操作でsemを1つ追加
•プロセス(またはスレッド)は、信号量の値に基づいて、パブリックリソースへのアクセス権があるかどうかを判断します.
-信号量semの値がゼロ以上の場合、プロセス(またはスレッド)は共通リソースへのアクセス権を有する
-信号量semの値がゼロ未満の場合、プロセス(またはスレッド)は、信号量semの値が0以上になるまでブロックされる
PV操作は主にスレッド間の同期と反発に用いられる
反発して、いくつかのスレッドは1つの信号量semだけを設定します
同期すると、複数の信号量が設定され、異なる初期値が配置され、それらの間の順序実行が実現されます.
しんごうりょうかんすう
sem_Init()信号量を作成し、初期化します.
sem_wait()とsem_trywait():P動作で、信号量がゼロより大きい場合に信号量の値を1つ減算
•違い:信号量がゼロ未満の場合sem_wait()はスレッドをブロックしますsem_trywait()はすぐに戻ります
sem_post():V操作で、信号量の値を加算しながら信号を送信して待機スレッドを起動する
sem_getvalue():信号量の値を得る
sem_destroy():信号量を削除
•反発ロック
•信号量
•条件変数
pthread_t thread_id;
しゅかんすう
pthread_create(),pthread_exit(),pthread_join(),pthread_cancel()
pthread_mutex_t mutex;
反発ロックには、主に次の基本関数が含まれます.
反発ロック初期化:pthread_mutex_init()
反発ロックロック:pthread_mutex_lock()
反発ロック判定ロック:pthread_mutex_trylock()
反発ロック解除:pthread_mutex_unlock()
反発ロックの解除:pthread_mutex_destroy()
しんごうりょう
オペレーティングシステムで使用されるPV原子操作は、プロセスまたはスレッド間の同期と反発に広く用いられている.
•本質的には、パブリックリソースへのアクセスを制御するために使用される非負の整数カウンタ
PV原子操作:整数カウンタ信号量semに対する操作
•一度のP操作でsemを1つ減らし、一度のV操作でsemを1つ追加
•プロセス(またはスレッド)は、信号量の値に基づいて、パブリックリソースへのアクセス権があるかどうかを判断します.
-信号量semの値がゼロ以上の場合、プロセス(またはスレッド)は共通リソースへのアクセス権を有する
-信号量semの値がゼロ未満の場合、プロセス(またはスレッド)は、信号量semの値が0以上になるまでブロックされる
PV操作は主にスレッド間の同期と反発に用いられる
反発して、いくつかのスレッドは1つの信号量semだけを設定します
同期すると、複数の信号量が設定され、異なる初期値が配置され、それらの間の順序実行が実現されます.
しんごうりょうかんすう
sem_Init()信号量を作成し、初期化します.
sem_wait()とsem_trywait():P動作で、信号量がゼロより大きい場合に信号量の値を1つ減算
•違い:信号量がゼロ未満の場合sem_wait()はスレッドをブロックしますsem_trywait()はすぐに戻ります
sem_post():V操作で、信号量の値を加算しながら信号を送信して待機スレッドを起動する
sem_getvalue():信号量の値を得る
sem_destroy():信号量を削除