应用编程-start启动线程

#include 
#include 
#include 
#include 

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;
}

你可能感兴趣的:(应用编程,c++,链表,开发语言)