gpt4 book ai didi

c - Pthread id 和 sleep

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:10 25 4
gpt4 key购买 nike

我需要做以下事情:创建一个线程,连续创建 10 个线程。每个线程只打印它的 ID 并休眠 n 秒,其中 n 是当前线程的序列号。但是,我无法正确传递参数,当我运行我的代码时,线程似乎只是在休眠。请帮忙?

这是我的代码:

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
# define N 10

void* printID (void *i)
{
int* p=(int*) i;
sleep(p);
pthread_exit(NULL);
}

void* th (void* unused)
{
int sec,i;
sec=1;
i=1;

while(i<=10){
pthread_t pid1;
pthread_create (&pid1, NULL, &printID, (void *)&i);
pthread_join(pid1,NULL);
printf("Thread ID je: %d \n",(int) pid1);

i=i+1;
}
}

int main(){

pthread_t pid;

pthread_create (&pid, NULL, &th, NULL);
pthread_join(pid,NULL);

return 0;
}

最佳答案

你的论点传递很好。但是您没有将值传递给 sleep

应该是

sleep(*p);

p 指向i 的地址(来自函数th())。您需要取消引用指针才能获取值。

关于c - Pthread id 和 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30872034/

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