データのマトリックスにアクセスするスレッドの目的のために、一度に1つだけが特定のデータ(x、y)にアクセスできるようにするために、すべてのスレッドがアクセスできるミューテックスのマトリックスが必要です。他にも選択肢があることは理解していますが、本当に必要なのはこれです。グローバルポインタを試し、クライアント/ユーザーからデータマトリックスのサイズを受け取ったときに、そのサイズのミューテックスのマトリックスを割り当てました。それをうまく機能させることができませんでした...配列の配列へのポインタ...私の頭が爆発します。これが私のちっぽけな試みの例です。
xthread_mutex ** globalPointer;
void example_init (int x, int y) {
globalPointer = (xthread_mutex_t **)malloc(sizeof(xthread_mutex_t)* x * y);
int i, j;
for(i=0; i<x; i++){
for(j=0; j<y; j++){
globalPointer[i][j] = xthread_mutex_init();
}
}
ミューテックス初期化のセグメンテーション違反、なぜですか?ポインタと配列を混在させる際の混乱を避けるためのヒントもいくつか教えていただければ幸いです。下は全部同じじゃないですか。
編集:言及しなかったことをお詫びしますが、「カスタム」ミューテックス、xthread_mutex_init()を使用しています。基本的に、割り当てられたロック(pthreadロックを使用して作成された)へのポインターを返します。何も問題が見つからない場合は、それらの間違いを推測します...
/*新しいロック解除されたミューテックスを返します*/
xthread_mutex_t xthread_mutex_init();