应用编程-start启动线程

2021/12/14 1:19:01

本文主要是介绍应用编程-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;
}


这篇关于应用编程-start启动线程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程