私の質問は、スレッドへのパラメーターの受け渡しに関するものです。
arrayA など、配列を操作する関数 Foo があります。処理を高速化するために、Foo はアレイ上で双方向に動作するようにコーディングされています。したがって、Foo は arrayA と整数 X をパラメーターとして受け取ります。X の値に応じて、正方向または逆方向に動作します。
「arrayA」と「X」をグローバルに使用しないようにしています。そのため、「arrayA」と「X」をパラメーターとして Foo に渡し、Foo を実行するための 2 つのスレッド (各方向に 1 つずつ) を作成しました。これが私がしたことです:
typedef struct {int* arrayA[MSIZE]; int X; } TP; //arrayPack=TP
void Foo (void *tP) {
TP *tp = (TP*)tP; // cast the parameter tP back to what it is and assign to pointer *tp
int x;
printf("\nX: %d", tp->X);
printf("\n arrayA: "); for (x=0; x<tp->arrayA.size(); printf("%d ", aP->arrayA[x]), x++);
} // end Foo
void callingRouting () {
int* arrayA[MSIZE] = {3,5,7,9};
TP tp; tp.arrayA=arrayA;
tp.X=0; _beginthread(Foo, 0, (void*)&tp); // process -- forward
tp.X=1; _beginthread(Foo, 0, (void*)&tp); // process -- reverse
}
値が渡されません。配列が空で印刷され、X の値が正しく印刷されません。私は何が欠けていますか?
また、これに関するいくつかの読み物(スレッドにパラメーターを渡すこと)、特にスレッドによって共有されるリソースを渡すことについての提案もいただければ幸いです。ありがとう。