我在线程中创建线程时遇到问题。我需要创建thread1并且thread1执行“某事”以及创建将执行其他操作的thread2。
我的代码:
#include <pthread.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
void *msg1(void *ignored)
{
void *msg2(void *ignored)
{
printf("this is thread2");
}
pthread_t thread;
int thread2;
thread2 = pthread_create(&thread, NULL, msg2, NULL);
return 0;
}
int main ()
{
pthread_t thread;
int thread1;
thread1 = pthread_create(&thread, NULL, msg1, NULL);
return 1;
}
答案 0 :(得分:3)
从线程回调内部创建线程与从主线程创建线程没有什么不同。当然,每个线程都需要自己的回调函数 - 使用给定的pthreads格式void* func (void*)
声明。
由于未知原因,您尝试在另一个函数内声明一个函数。这没有任何意义,不允许在C. Threads或没有线程。
如果您希望限制第二个线程的范围,则将两个线程回调放在它们自己的模块中,并创建第二个回调函数static
。这是非常基础的程序设计 - 我建议在进行多线程之前很久就会进行研究。