私はマルチスレッド プログラムに取り組んでおり、mutex を定義する場所について質問があります。
関連情報: プログラムにはmain.c
、ユーザー入力に従って特定のアクションを決定する場所があります。main は、という名前のファイルにある master_function を呼び出しますmaster.c
。このmaster.c
ファイルでは、他のいくつかのアクション (関係ありません) に沿って N 個のスレッドを作成します。スレッドは、ファイルにある son_threads という名前の関数を呼び出し、son.c
重要な領域に入るときにミューテックスを使用する必要があります (競合状態を防ぐためにいくつかのグローバル変数を編集します)。私が持っている別のファイルは、type.h
使用する必要があるいくつかのグローバル変数を定義する場所です。
ミューテックスの宣言は次のとおりです。
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
そのため、ファイルtype.h
に表示されるように、自分でミューテックスを定義しようとしました。son.c
コンパイルしようとすると、エラーが発生します。そのミューテックスをいくつかのファイルで定義しているので、これは正しいです。
son.c
しかし、そのスレッドを作成するたびにミューテックスがデフォルト設定に初期化され、適切に使用できなくなるため、ファイルでミューテックスを定義できないと確信しています。これについてはわかりません。
ミューテックスは、N 個のスレッドがアクセスできるグローバル変数でなければなりません。じゃあどこに置けばいいの?
私は自分自身を正しく説明しているかどうかわかりません。がんばります。