一起talk C栗子吧(第一百零七回:C语言实例--线程概述)
2016-01-19 22:31
323 查看
各位看官们,大家好,上一回中咱们说的是生产者与消费者问题的例子,这一回咱们说的例子是:线程概述。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,我们今天我们章回中的主角是线程。什么是线程呢?大家还记得我们在前面章回中介绍过进程的概念吧:进程就是在系统中运行着的程序。而线程是进程中的一个单元,通常叫它轻量级的进程。
线程由进程来创建,它只有自己的栈,其它资源都是和创建它的进程一起共用。接下来我们通过具体的例子来看看线程的“庐山真面目”。
我们查看一下系统的进程。在终端中执行命令:ps x得到以下结果:
大家从上面的运行结果中可以看到系统中运行着firefox进程,在终端中执行命令:ps xH得到以下结果:
从上面的结果中大家可以看到进程firefox拥有很多线程。有看官说,你怎么知道呢?其实从PID这一列就能看到,它们都拥有相同的PID。这也再次说明线程和创建它的进程共用资源。严格点说,线程是没有像进程PID一样的标记,上面结果显示的是进程的PID。我们可以使用ps md 3740命令查看PID为3740进程的线程,结果如下:
从上面的运行结果中可以看到PID为3740进程的线程是没有PID的。
各位看官,关于线程概述的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。
看官们,我们今天我们章回中的主角是线程。什么是线程呢?大家还记得我们在前面章回中介绍过进程的概念吧:进程就是在系统中运行着的程序。而线程是进程中的一个单元,通常叫它轻量级的进程。
线程由进程来创建,它只有自己的栈,其它资源都是和创建它的进程一起共用。接下来我们通过具体的例子来看看线程的“庐山真面目”。
我们查看一下系统的进程。在终端中执行命令:ps x得到以下结果:
[code] PID TTY STAT TIME COMMAND 1501 ? Ssl 0:00 cinnamon-session --session cinnamon ... //省略其它进程的信息 3375 ? Sl 0:08 gnome-terminal 3383 pts/1 Ss 0:00 bash 3740 ? Sl 0:02 /usr/lib/firefox/firefox //这是firefox浏览器的进程 3823 pts/1 R+ 0:00 ps x
大家从上面的运行结果中可以看到系统中运行着firefox进程,在终端中执行命令:ps xH得到以下结果:
[code] PID TTY STAT TIME COMMAND 1501 ? Ssl 0:00 cinnamon-session --session cinnamon 1501 ? Ssl 0:00 cinnamon-session --session cinnamon 1501 ? Ssl 0:00 cinnamon-session --session cinnamon 1501 ? Ssl 0:00 cinnamon-session --session cinnamon ... //省略其它进程的信息 3375 ? Sl 0:08 gnome-terminal 3375 ? Sl 0:00 gnome-terminal 3375 ? Sl 0:00 gnome-terminal 3375 ? Sl 0:00 gnome-terminal 3383 pts/1 Ss 0:00 bash 3740 ? Sl 0:02 /usr/lib/firefox/firefox //下面都是firefox的线程 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? SNl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? SNl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3740 ? Sl 0:00 /usr/lib/firefox/firefox 3833 pts/1 R+ 0:00 ps xH
从上面的结果中大家可以看到进程firefox拥有很多线程。有看官说,你怎么知道呢?其实从PID这一列就能看到,它们都拥有相同的PID。这也再次说明线程和创建它的进程共用资源。严格点说,线程是没有像进程PID一样的标记,上面结果显示的是进程的PID。我们可以使用ps md 3740命令查看PID为3740进程的线程,结果如下:
[code] ps mp 3740 //查看PID为3740进程的线程 PID TTY STAT TIME COMMAND 3740 ? - 0:02 /usr/lib/firefox/firefox - - Sl 0:01 - //下面显示的都是firefox的线程 - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - SNl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - SNl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 - - - Sl 0:00 -
从上面的运行结果中可以看到PID为3740进程的线程是没有PID的。
各位看官,关于线程概述的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。
相关文章推荐
- C语言 -- 折半查找小程序
- 格式化文件/控制台输入输出
- 字符串翻转
- C语言设计模式-封装-继承-多态
- C语言设计模式-封装-继承-多态
- C语言设计模式-封装-继承-多态
- C++快速排序实现
- C语言的面向对象编程
- UVA 11300_ Spreading the Wealth
- 进一步理解C++构造与析构
- 求C++数组长度问题
- C++11新特性应用--介绍几个新增的便利算法(用于分区的几个算法)
- C++11新特性应用--介绍几个新增的便利算法(用于分区的几个算法)
- 使用GDB命令行调试器调试C/C++程序
- C++的运算符重载
- C++之智能指针(二)
- C++二维指针内存开辟和释放
- 有关C++中String的一些知识
- 谷歌C++编程规范笔记
- C++之智能指针 (一 )