如何成功地使用动态数组多线程传递参数

How to successfully use dynamic array to pass parameter with mutithread

本文关键字:数组 动态 多线程 参数 何成功 成功      更新时间:2024-05-11
void * bubbleSort(void * data){
int * str;
str = (int* ) data;
int temp = 0;
for ( int i = 0 ; i < len ; i++ ){
for (int j = i + 1; j < len ; j++ ){
if(str[i] > str[j]){
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
}
int main(){
int *data= new int[1000000];
...
pthread_t thread[input];
for ( int i = 0 ; i < input ; i ++){
pthread_create(&thread[i],NULL,bubbleSort,arguments);  
pthread_join(thread[i],NULL);
}
}

我有int *data[1000000],我想用pthread把参数传递给冒泡排序

上面是我写的代码,但没有输出

如何成功工作?

要解决眼前的问题:您的data变量定义了错误的类型。int *data[1000]是1000个int *的阵列,其衰变为int**。您的bubbleSort函数需要一个int *

按如下方式声明data

int * data = new int[10000];

然后你可以像现在一样简单地将它作为CCD_ 10传递给CCD_。

然而,现代C++有一个std::thread,它更容易使用:

std::thread sorter(bubbleSort, data);
sorter.join();