编程语言
首页 > 编程语言> > 应用编程-start启动线程

应用编程-start启动线程

作者:互联网

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

typedef void (*myFunc) (void);
typedef struct THREAD_S
{
	int index;
	myFunc funcl;
}THREAD_T;

void test1()
{
	int i = 0;
	while(i++ < 2)
	{
		printf("test1\r\n");
		sleep(1);
	}
}

void test2()
{
	int i = 0;
	while(i++ < 2)
	{
		printf("test2\r\n");
		sleep(2);
	}
}

void *pbfunc(void *p)
{
	THREAD_T *thread = (THREAD_T*)p;
	if(thread && thread->funcl)
	{
		printf("run before---thread = %p\r\n",thread);
		(thread->funcl)();//阻塞,等到线程运行结束才会退出
		printf("run after---thread = %p\r\n",thread);
		free(thread);
		thread = NULL;		
	}
}

void start(myFunc func2)
{
	THREAD_T *thread = NULL;
	pthread_t pid = 0;
	int ret = -1;
	
	thread = (THREAD_T*)malloc(sizeof(THREAD_T));
	thread->funcl = func2;
	thread->index = 1;

	ret = pthread_creat(&pid,NULL,pbfunc,(void*)thread);
}

void main()
{
	start((myFunc)&test1);
	start((myFunc)&test2;
}

标签:myFunc,thread,THREAD,int,void,编程,start,线程,printf
来源: https://blog.csdn.net/weixin_43338497/article/details/121916181