いっしょにtalk C栗(第百一十五回:C言語例--スレッド同期の反発量一)


皆さん、こんにちは、前回はスレッド同期の信号量の例をお話ししましたが、今回はスレッド同期の反発量の例をお話しします.余談はさておき,話は本筋に戻る.一緒にtalk C栗を食べましょう!
今日は、反発量を使用したスレッド同期について説明します.反発量の核心操作はロック/ロック解除操作であり,関連する関数を用いてロック/ロック解除操作を行うことができる.次に,反発量に関連する関数を紹介する.
pthread_mutex_init関数
int pthread_mutex_init (pthread_mutex_t *__mutex,const pthread_mutexattr_t *__mutexattr)

この関数は、反発量を初期化するために使用されます.この関数には2つのパラメータがあります.次に、それぞれを紹介します.
  • の最初のパラメータは反発量を指すポインタであり、関数はそのポインタが指す反発量を初期化する.
  • の第2のパラメータは反発量属性を指すポインタであり、関数は反発量属性の値をそのポインタが指す変数の値に変更することができる.
  • この関数が正常に実行された場合、ゼロが返されます.そうでなければ、対応するエラーコードが返されます.

  • pthread_mutex_destroy関数
    int pthread_mutex_destroy (pthread_mutex_t *__mutex)
  • この関数は、反発量に関連するリソースを破棄するために使用される.
  • この関数には1つのパラメータしかありません.パラメータは反発量を指すポインタであり、関数は反発量に関連するリソースを破棄します.
  • この関数が正常に実行された場合、ゼロが返されます.そうでなければ、対応するエラーコードが返されます.

  • ロック操作の関数
    int pthread_mutex_lock (pthread_mutex_t *__mutex)
  • この関数は、反発量をロック操作するために使用される.
  • この関数には1つのパラメータしかなく、パラメータは反発量を指すポインタであり、関数はポインタが指す反発量をロック操作する.
  • この関数が正常に実行された場合、ゼロが返されます.そうでなければ、対応するエラーコードが返されます.

  • この関数を使用する場合は、次の2つの点に注意してください.
  • 相互反発量がロックされている場合、他のスレッドがこの関数を使用してロックされると、相互反発量がロック解除されるまでスレッドがブロックされる.
  • 反発量がロックされている場合、同じスレッドが反発量を再びロックすると、デッドロックが発生する.
  • int pthread_mutex_trylock (pthread_mutex_t *__mutex)
  • この関数は、反発量を試行的にロックするために使用される.
  • この関数には1つのパラメータしかなく、パラメータは反発量を指すポインタであり、関数はポインタが指す反発量をロック操作する.
  • この関数が正常に実行された場合、ゼロが返されます.そうでなければ、対応するエラーコードが返されます.

  • この関数はpthread_と見なすことができるmutex_lock関数の補完は、反発量に対して試行的なロック操作を行い、試行的な意味は、反発量がロックされている場合、反発量に対して繰り返しロック操作を行わないため、現スレッドがブロックされず、デッドロックも発生せず、EBUSYに戻ることを意味する.
    pthread_mutex_unlock関数
    int pthread_mutex_unlock (pthread_mutex_t *__mutex)
  • この関数は、反発量をロック解除するために使用される.
  • この関数には1つのパラメータしかなく、パラメータは反発量を指すポインタであり、関数はポインタが指す反発量をロック解除操作する.
  • この関数が正常に実行された場合、ゼロが返されます.そうでなければ、対応するエラーコードが返されます.

  • 皆さん、スレッド同期の反発量の例についてお話しします.後に何か例があるか知りたいので、次の分解を聞いてください.