您的位置:首页 > 编程语言 > C语言/C++

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

2016-03-04 18:39 295 查看
接触过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 <stdio.h>
#include <pthread.h>
#include <stdlib.h>
//执行线程的一个函数
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);
	}
}
运行结果:



两个死循环彼此互不干扰



?想知道原因吗?请持续关注本博客!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: