C语言之多线程机制(程序可以同时被执行而不会相互干扰)
2016-03-04 18:39
295 查看
接触过linux的人或多或少知道,linux有多线程的机制,也就是说程序可以同时执行,不受干扰,关于这个在我以前的博文里有过类似模拟的时间片轮转程序,跟这个其实是类似的。其实在window上,线程的头文件也是可以包含进来使用的,我这里用DevC++这个软件来测试,看看运行效果就知道了,接下来我们简单介绍一下线程接口。
那么什么是线程呢?
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
二、什么时候使用多线程? 当多个任务可以并行执行时,可以为每个任务启动一个线程。
三、线程的创建 使用pthread_create这样一个函数:
第一个参数为指向线程标识符的指针。
第二个参数用来设置线程属性。
第三个参数是线程运行函数的起始地址。
最后一个参数是运行函数的参数。
那接下来我们看看如何来使用吧!!!
很简单,在linux下可以跑这段代码,在window上一样也可以跑,因为这两个接口在两个操作系统被相互兼容。
瞬间在window上做开发C语言就很强大了,有木有?
当然一下只是创建了一条线程,还可以创建多条进程,不信可以去试试!
两个死循环彼此互不干扰
?想知道原因吗?请持续关注本博客!
那么什么是线程呢?
线程是进程的一个实体,是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); } }运行结果:
两个死循环彼此互不干扰
?想知道原因吗?请持续关注本博客!
相关文章推荐
- 深入理解C++中的mutable关键字
- c++复制构造函数实例
- c++操作符
- C++中类所占内存空间的分析(转载)
- c++学习
- 【转】c++继承:公有、私有、保护
- C++入门学习——标准模板库之vector
- c++中const的用法,含义,好处
- 函数与程序结构【重学C之四】
- C++之常指针,指针常量,函数指针,const用法总结
- C++ create_task详解
- c语言中的宏定义的学习体会
- C++ Primer 学习笔记——动态内存和智能指针(2)
- C/C++获取Windows系统CPU和内存及硬盘使用情况
- 使用C++实现OO观察者模式
- C++第一次实验-1
- C++ 调试技巧
- gsoap生成c++框架
- c语言的编程格式
- C++ 错误: ‘std::vector<float> feat’的声明隐藏了一个形参