C 如何在简单的Pthread编程中分配数组变量?
我是Pthread编程的新手 我一直在尝试以一种非常简单的方式使用Pthread,就像下面的代码一样,它在我的代码块中运行良好,因为我已经包含了dll和bin文件C 如何在简单的Pthread编程中分配数组变量?,c,arrays,pthreads,variable-assignment,C,Arrays,Pthreads,Variable Assignment,我是Pthread编程的新手 我一直在尝试以一种非常简单的方式使用Pthread,就像下面的代码一样,它在我的代码块中运行良好,因为我已经包含了dll和bin文件 #include <stdio.h> #include <stdlib.h> #include <pthread.h> void *printNumber(void *x); int main(){ pthread_t threadA, threadB, threadC, threadD
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *printNumber(void *x);
int main(){
pthread_t threadA, threadB, threadC, threadD;
pthread_create(&threadA, NULL, printNumber, (void *)"Sponge");
pthread_create(&threadB, NULL, printNumber, (void *)"Star");
pthread_create(&threadC, NULL, printNumber, (void *)"Squid");
pthread_create(&threadD, NULL, printNumber, (void *)"Crab");
pthread_exit(NULL);
return 0;
}
void *printNumber(void *x){
char* id = (char*)x;
int i;
for(i=0;i<100;i++){
printf("Thread %s: printing integer value %i\n", id, i);
}
pthread_exit(NULL);
}
以下是我的问题:
比如说:
typedef struct {
int startIdx;
int *arrC, *arrA, *arrB;
} someType;
[...]
x->arrA = arrayA
[...]
需要pthread_join,因为您希望在退出应用程序之前等待每个线程都完成。@Roney Michael:谢谢您的链接。看来我还没有学会基本的C编程101。我想对上面的两个答案进行升级,这对我很有帮助,但我仍然没有这样做的名声,我很抱歉。等我有了足够的声誉后,我会再投票决定Anthony Catel:在我看到你的答案之前,我正在考虑根据我找到的链接(computative.engineering.or.id/Matrix/Perkalian)中的一个示例更改我的结构,比如:typedef struct{int startIdx;int(*arrC)[SIZE],(*arrA)[SIZE],(*arrB SIZE];}someType;但你的建议似乎更容易理解。谢谢。@Anthony Catel:你的建议很有效。。。!!!非常感谢:D。我现在要用Pthread编写一个矩阵mult。OT:这里有
->
操作符。@alk:我明白了。谢谢。编译器抱怨赋值运算符的右边不允许有数组。你想对每一行标记的代码做什么?还有,什么是someType
?@code Guru:那么赋值运算符的右侧允许做什么?Sometype是一个新类型,将转换为(void*)作为pthread_create的参数。实际上,我不确定我写的代码背后发生了什么(在内存堆栈中)。如果你愿意,请看我的下一篇文章(关于矩阵赋值的新问题)。
||In function `int main()':|
\pth_array.c|58|error: ISO C++ forbids assignment of arrays|
typedef struct {
int startIdx;
int *arrC, *arrA, *arrB;
} someType;
[...]
x->arrA = arrayA
[...]