我的问题是关于传递给线程的参数。
我有一个函数 Foo 对数组进行操作,比如 arrayA。为了加快速度,Foo 被编码为在数组的两个方向上操作。因此, Foo 将 arrayA 和一个整数 X 作为参数。根据 X 的值,它可以正向或反向运行。
我希望避免全局使用“arrayA”和“X”。所以,我将“arrayA”和“X”作为参数传递给 Foo,并创建两个线程来运行 Foo——每个方向一个。这是我所做的:
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 的值。我错过了什么?
我也很感激关于这方面的一些阅读的建议——将参数传递给线程——尤其是在传递线程共享的资源方面。谢谢。