C语言之多线程机制(程序可以同时被执行而不会相互干扰)

接触过linux的人或多或少知道,linux有多线程的机制,也就是说程序可以同时执行,不受干扰,关于这个在我以前的博文里有过类似模拟的时间片轮转程序,跟这个其实是类似的。其实在window上,线程的头文件也是可以包含进来使用的,我这里用DevC++这个软件来测试,看看运行效果就知道了,接下来我们简单介绍一下线程接口。

      那么什么是线程呢?

     线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

二、什么时候使用多线程?     当多个任务可以并行执行时,可以为每个任务启动一个线程。
三、线程的创建     使用pthread_create这样一个函数:

int pthread_create(pthread_t *tidp,const pthread_attr_t *attr,
(void*)(*start_rtn)(void*),void *arg);

参数

第一个参数为指向线程 标识符指针
第二个参数用来设置线程属性。
第三个参数是线程运行函数的起始地址。
最后一个参数是运行函数的参数。
那接下来我们看看如何来使用吧!!!
很简单,在linux下可以跑这段代码,在window上一样也可以跑,因为这两个接口在两个操作系统被相互兼容。 瞬间在window上做开发C语言就很强大了,有木有? 当然一下只是创建了一条线程,还可以创建多条进程,不信可以去试试!
#include 
#include 
#include 
//执行线程的一个函数
void *do_thread(void *arg);

int main(void)
{
	//创建线程的id号 
	pthread_t    tid ; 
	int ret ; 
	//创建一条线程 
	ret = pthread_create(&tid , NULL , 	do_thread , NULL);
	if(ret != 0)
	{
		fprintf(stderr , "创建线程失败!\n");
		return -1 ; 
	}
	//当线程结束时自动释放id号 
	ret = pthread_detach(tid);	
	while(1)
	{
		printf("Hello world1!\n\n");
		sleep(1);
	}
	return 0 ; 
}
void *do_thread(void *arg)
{
	while(1)
	{
		printf("Hello world2!\n\n");
		sleep(1);
	}
}
运行结果:
C语言之多线程机制(程序可以同时被执行而不会相互干扰)_第1张图片
两个死循环彼此互不干扰 ?想知道原因吗?请持续关注本博客!


    


你可能感兴趣的:(C语言之多线程机制(程序可以同时被执行而不会相互干扰))