我正在尝试在 C 中做一些简单的事情,但我很困惑。程序很简单,主要功能是根据作业队列结构处理线程。它一次最多打开 4 个线程。大约300个线程直到结束。线程函数始终相同,但参数不同。
孔代码有点长,粘贴在这里,所以我将粘贴一些部分。
使用以下参数打开线程:pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&pth, &attr, dothejob, (void *) varis);
线程调用函数
void *dothejob(void * varis){
unsigned char * arr1;
arr1 = (unsigned char*) calloc(3000000, sizeof (unsigned char));
unsigned char * arr2;
arr2 = (unsigned char*) calloc(3000000, sizeof (unsigned char));
// doing some calculations and comparisons and stuff
unsigned int topten[10];
// <---- here topten has some values from previous threads, but why ?
// picking top ten and putting it in the var topten[
free(arr1);
free(arr2);
pthread_detach(pthread_self());
}
如果有人知道,请帮助我。先感谢您。