我必须这样做:
编写一个程序,其主线程创建3个其他线程。这些线程中的每一个(与主线程不同)都应写入其pid和tid并终止返回1到3之间的整数,并且不同于其他线程返回的值。主线程应在标准中打印出其pid和每个其他线程返回的值。
我认为我做得对,除了我不明白我应该如何返回1到3之间的整数
到目前为止我已经使用了以下代码:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#define DEBUG 0
// int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
// int pthread_join(pthread_t, void **value_ptr);
void *printID(void *arg){
int i;
unsigned long tid;
tid = *((unsigned long *) arg);
printf("Thread tid: %lu Thread pid: %d \n", tid, getpid());
}
int main(int argc, char *argv[]) {
pthread_t id1, id2, id3;
pthread_create(&id1, NULL, printID, &id1);
pthread_create(&id2, NULL, printID, &id2);
pthread_create(&id3, NULL, printID, &id3);
pthread_join(id1, NULL);
pthread_join(id2, NULL);
pthread_join(id3, NULL);
printf("Main thread pid: %d\n", getpid());
sleep(1);
}
答案 0 :(得分:0)
因为c中的线程可以返回void *。你可以为你想要返回的int分配一个空间,从main中读取它,但不要忘记释放它。