多线程执行 [大三四八九月实习]
来源:互联网 发布:win7语音朗读软件 编辑:程序博客网 时间:2024/05/01 01:10
1多线程执行分析
自由当前运行程序[进程 ]创建一个子进程开始,可以将原来的进程看成主线程,被创建的进程称之为子线程。
C ++的boost库利用对象的构造函数来实现线程对象被创建时就开始执行的机制,当一个子线程被创建时,主线程与子线程【在有多个子线程时,各个线程之间也是被交互执行着】被交互执行,只是作为人类的我们无法从感官之上感觉它们彼此是被交互执行的,因为交互执行的时间很小很小【运行得极快】,所以我们也可以从一定程度的宏观上认为多个线程就是“同时”在被执行着。单个线程被执行的时间可被称为“时间片”。
图1 线程执行描述图
2 程序实例
用VS2010建立一个非空控制台程序。然后在.cpp中写入如下代码【代码可略过】:
#include "stdafx.h"#include <iostream>#include <boost/thread.hpp>using namespace std;using namespace boost;#define BOOST_DATE_TIME_SOURCE#define BOOST_THREAD_NO_LIB//----------------------------------//函数声明//----------------------------------void print_string( const string &str );int _tmain(int argc, _TCHAR* argv[]){ int i;char str[]= "\n|||||||||||||||||"; thread my_thread_1( print_string, "\n**********" );for ( i = 0; i < strlen(str); ++i ){cout << str;}getchar();return 0;}//------------------//打印字符串到标准流//------------------void print_string( const string &str ){ int i; for( i = 0; i < str.length(); ++i ){cout << str[i];}cout << str; }
运行结果如下:
图2 运行结果1 图3 运行结果2 图4 运行结果3
由多次的运行结果可知,每次运行的结果是可能会完全不一样的,但是可以表明两个线程都是“同时”在运行。有时候主线程一下子就被执行完毕并被输出到窗口之中,有时候每个线程都运行一点。也有可能不只是表明现象。
在进程中创建线程,各线程对进程所带来的效果可视为同时的。比如一个进程中显示多路视频,每路视频由一个线程来负责显示,每个线程对应的窗口上的视频都是连续的,尽管每个窗口的下一帧视频流的显示是有顺序的,但是我们看不出来,以为它们是各自在连续独立的进行视频显示。
当然了,如果要使多个线程之间彼此有联系,那么就是线程之间的通信了,比如只有在线程1执行完毕之后线程2才能执行,那么线程1就要和线程2进行通信了。各个线程之间的通信由线程类thread内的函数成员来完成。如果允许用户继承的话,用户还可以编写自己的线程通信函数。
这些内容都是我随便想想而做的笔记。
Thread Note Over。
- 多线程执行 [大三四八九月实习]
- 第一个月实习总结 [大三四八九月实习]
- 第二月实习总结 [大三四八九月实习]
- 实习中的一总结 [大三四八九月实习]
- C++ BOOST库 条件变量[多线程通信]机制 [大三四八九月实习]
- [Math] 排列组合 笔记 [大三四八九月实习]
- 排列组合应用于计数的思路 [大三四八九月实习]
- ACE结构和功能 [大三四八九月实习]
- 搭乘地铁|轻轨规律(^-^) [大三四八九月实习]
- C++ STL 容器 迭代器 算法 [大三四八九月实习]
- malloc/free和new/delete [大三四八九月实习]
- XML文件的基本结构 [大三四八九月实习]
- TinyXML读取XML文件内容 [大三四八九月实习]
- TinyXML读取XML文件 [大三四八九月实习]
- ACE在windows下的编译及配置(VS2010) [大三四八九月实习]
- BOOST 在windows的编译及配置(VS2010) [大三四八九月实习]
- BOOST timer库应用[timer库1] [大三四八九月实习]
- boost 库 timer组件的源码分析 [大三四八九月实习]
- Avoid The Lakes
- winform 读写配置文件
- Android TabHost
- 数据基本操作(二)
- Ignatius and the Princess III hdu 1028
- 多线程执行 [大三四八九月实习]
- BNU Avoid The Lakes
- 移动开源项目
- ARP/代理ARP的总结
- 判断多边形凹凸性
- hdu-An Easy Problem
- Ural 1073. Square Country 背包
- Qt Qtableview 的一些用法
- Android 设置Spinner文字标题颜色 字体大小样式