gpt4 book ai didi

C 程序未在 main() 中休眠

转载 作者:行者123 更新时间:2023-11-30 16:25:22 25 4
gpt4 key购买 nike

我试图强制我的程序在创建线程后休眠一秒钟。我可以让线程在其进程中休眠,但不能在主线程中休眠。我读到的所有内容都表明它只是一个系统进程,无论在哪里调用它都应该工作。我希望它在打印线程已创建后(在连接之前)休眠。 “创建”和“加入并退出”打印语句之间没有延迟。你能说出为什么它不起作用吗?

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>

#define SECONDS 1 //seconds to sleep
#define SIZE 25 //number of fibonaccis to be computed

int *fibResults; //array to store fibonacci results
int idx; //index for the threads

//executes and exits each thread
void *run(void *param) {
if (idx == 0) {

sleep(SECONDS);
fibResults[idx] = 0;
pthread_exit(0);

} else if (idx == 1) {

sleep(SECONDS);
fibResults[idx] = 1;
pthread_exit(0);

} else {

sleep(SECONDS);
fibResults[idx] = fibResults[idx -1] + fibResults[idx -2];
pthread_exit(0);

}
}


int main(void) {
fibResults = malloc(SIZE * sizeof(*fibResults));
pthread_attr_t attrs;
pthread_attr_init(&attrs);

for (idx = 0; idx < SIZE; idx++) {
pthread_t thread;
pthread_create(&thread, &attrs, run, NULL);

printf("Thread[%d] created\t", idx);

sleep(SECONDS); //THIS IS WHERE SLEEP ISN'T WORKING!!!!!!!!!!!!!

pthread_join(thread, NULL);

printf("Thread[%d] joined & exited\t", idx);
printf("The fibonacci of %d= %d\n", idx, fibResults[idx]);
}
return 0;
}

最佳答案

for (idx = 0; idx < SIZE; idx++)
{
pthread_t thread;
pthread_create(&thread, &a, run, NULL);
printf("Thread[%d] created\t", idx);
fflush(stdout);
sleep(SECONDS);
pthread_join(thread, NULL);
printf("Thread[%d] joined & exited\t", idx);
printf("The fibonacci of %d= %d\n", idx, fibResults[idx]);
}

关于C 程序未在 main() 中休眠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53423194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com