C++多线程类库的设计与实现(八)完
来源:互联网 发布:数据信息知识的关系 编辑:程序博客网 时间:2024/06/06 00:43
面向对象的多线程编程
我们用一个简单的例子来结束这个编程系列。我们用C++类库重写一开始的例子。
//----test1.cpp----
#include <cstdio>
#include <Thread.h>
volatile bool g_iQuitFlag = false;
class MyTask1 : public Thread {
private:
void Run() {
for(;!g_iQuitFlag;) {
printf("I am alive.\n");
Thread::Sleep(3000);
}
}
};
class MyTask2 : public Thread {
public:
static const int MAX_I = 65534;
private:
int Sum(int n) {
if(n==0) {
return 0;
} else {
return n + Sum(n-1);
}
}
void Run() {
for(int i=1; (!g_iQuitFlag) && (i<MAX_I); ++i) {
int sum = Sum(i);
printf("Sum(1-->%d) = %d.\n", i, sum);
Thread::Sleep(2000);
}
}
};
int main()
{
MyTask1 task1;
MyTask2 task2;
task1.Start();
task2.Start();
char szBuf[1024];
while(true) {
fgets(szBuf, sizeof(szBuf), stdin);
if(0 == strncmp(szBuf, "quit", 4)) {
g_iQuitFlag = true;
break;
}
}
return 0;
}
//----EOF----
这个程序的功能和前面的C版本相同,但是C++类库让我们免于处理平台相关细节,从而使得编程简化。
另外,类似上面的例子并不能做很多事情,因为我们还不具备有效的手段来控制线程间的同步与互斥。多线程同步设计是多线程设计的重点工作之一,它的核心思想是,在必要情况下将并行处理串行化。关于同步与互斥的话题,我们将在另一个系列中对其进行详细讨论。
- C++多线程类库的设计与实现(八)完
- C++:多线程类库的设计与实现(一)
- C++:多线程类库的设计与实现(二)
- C++:多线程类库的设计与实现(三)
- C++:多线程类库的设计与实现(四)
- C++:多线程类库的设计与实现(五)
- C++:多线程类库的设计与实现(六)
- C++:多线程类库的设计与实现(七)
- EF6的多线程与分库架构设计实现
- EF6的多线程与分库架构设计实现
- EF6的多线程与分库架构设计实现
- EF6的多线程与分库架构设计实现
- EF6的多线程与分库架构设计实现
- ftp 多线程下载的设计与实现
- ftp 多线程下载的设计与实现
- 模式识别八--三层BP神经网络的设计与实现
- 基于NX的研发产品设计管理平台实现(八)--BOM的设计与管理3
- 《Linux内核设计与实现》读书笔记(八)- 中断下半部的处理
- GIS全球发展趋势及Esri策略
- SQL Server 2012 使用OFFSET FETCH轻松实现分页
- linux 目录结构
- C++:多线程类库的设计与实现(六)
- C++:多线程类库的设计与实现(七)
- C++多线程类库的设计与实现(八)完
- 关于指针
- 设计多线程安全库
- jcifs.smb.SmbException: 0xC000007F 错误解决方案
- 双色球
- 三星4核处理器4412应用
- MFC初始化时隐藏对话框(无闪烁)
- floyd-warshall 算法分析 每对顶点之间的最短路
- Unable to resolve superclass of错误的解决方法