当我尝试使用我的线程执行decFunk进程时,我得到一个参数3错误。我见过一些例子,他们提到我需要一个void参数,但我不确定该怎么做。
void *decFunk(PQueue* pQ){
pQ->currentProcess = pQ->firstProcess;
int temp = pQ->currentProcess->duration;
pQ->firstProcess->duration = temp -1;
if(pQ->currentProcess->duration == 0){
pQ->firstProcess = pQ->firstProcess->next;
}
return NULL;
}
int main(int argc, char *argv[]) {
int numThreads = atoi(argv[1]);
sem_init(&tLock,0,0);
sem_init(&qLock,0,0);
FILE * fIn;
PQueue* sortQ;
sortQ = startQueue();
printf("Enter number of threads you want to use.");
pthread_t threads;
pthread_create(&threads ,NULL , decFunk, sortQ);
for(t = 0; t< 5; t++){
fIn = fopen("input.txt", "r");
printf("Time: %d\n", t);
readIn(fIn, sortQ);
printQ(sortQ);
t++;
fclose(fIn);
sleep(1);
}
pthread_join(&threads,NULL);
pthread_exit(NULL);
return 0;
}
答案 0 :(得分:0)
规范的这一部分涵盖了与ColoredConsoleWrite(ConsoleColor.Blue, $"My favorite fruit: Apple");
之间的指针转换:
§ 6.3.2.3指针
可以将指向任何对象类型的指针转换为 指向void *
并再次返回的指针;结果应该等于 原始指针。
如果将非void指针传递给以void
作为参数的函数,则转换是自动的。如果将void *
分配给非void指针,则转换也是自动的,反之亦然。
因此代码的相关位可写为:
void *