Pthread id 和睡眠
Pthread id and sleep
我需要做以下事情:
创建一个线程,连续创建 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()
)。您需要取消引用指针才能获取值。
我需要做以下事情: 创建一个线程,连续创建 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()
)。您需要取消引用指针才能获取值。