问题描述:一圆桌前坐着5位哲学家,两个人中间有一只筷子,桌子中央有面条。哲学家思考问题,当饿了的时候拿起左右两只筷子吃饭,必须拿到两只筷子才能吃饭。上述问题会产生死锁的情况,当5个哲学家都拿起自己右手边的筷子,准备拿左手边的筷子时产生死锁现象。解决办法:1、添加一个服务生,只有当经过服务生同意之后才...
分类:
编程语言 时间:
2014-05-04 20:23:48
阅读次数:
371
多线程编程之读写锁
Pthread是 POSIX threads 的简称,是POSIX的线程标准。
pthread读写锁把对共享资源的访问者分为读者和写者,读者只对共享资源进行读访问,写者只对共享资源进行写操作。在互斥机制,读者和写者都需要独立独占互斥量以独占共享资源,在读写锁机制下,允许同时有多个读者读访问共享资源,只有写者才需要独占资源。相比互...
分类:
编程语言 时间:
2014-05-04 18:54:12
阅读次数:
416
在高性能爬虫为什么使用定制DNS客户端一文中阐述了DNS解析是网络爬虫的瓶颈。目前主要有两种方法来提高DNS解析效率:1. 基于多线程的DNS 解析2.
基于NIO的DNS解析dnsjava中使用的解析方式就是基于多线程的DNS解析class ResolveThread extends Thread...
分类:
其他好文 时间:
2014-05-04 11:15:14
阅读次数:
300
实质上,很多后台服务程序并发控制的基本原理都可以归纳为生产者/消费者模式,而这是恰恰是在本科操作系统课堂上老师反复讲解,而我们却视而不见不以为然的。在博文《一种面向作业流(工作流)的轻量级可复用的异步流水开发框架的设计与实现》中将介绍一种生产者/消费者模式的具体应用。生产者消费者问题是研究多线程程序...
分类:
编程语言 时间:
2014-05-04 11:01:12
阅读次数:
418
boost编译配置及简单使用1、下载 http://www.boost.org/2、编译: A、解压
boost_1_55_0.zip 到boost路径 B、运行 bootstrap.bat。 会生成2个文件,分别是bjam.exe 和 b2.exe.
bjam是早起的文件,新版本用b2比较好 .....
分类:
其他好文 时间:
2014-05-04 10:12:01
阅读次数:
299
“多个人干活比一个人干活要快,多线程并行执行也比单线程要快”这是我学习编程长期以来的想法。然而在实际的开发过程中,并不是所有情况下都是这样。先看看下面的程序(点击下载):
ThreadTester是所有Tester的基类。所有的Tester都干的是同样一件事情,把counter增加到10000000...
分类:
编程语言 时间:
2014-05-04 09:53:28
阅读次数:
624
用基类的指针去转存派生类时除了上一篇boost::serialization 用基类指针转存派生类(错误多多,一波三折)之外,还有另一种更简单的方法:
用BOOST_CLASS_EXPORT宏。下面我们来分析怎样用BOOST_CLASS_EXPORT来实现
用基类的指针去转存派生类。
首先来看前面实例的一段代码:
void save()
{
std::ofstream ofs("t7.x...
分类:
其他好文 时间:
2014-05-04 09:48:50
阅读次数:
487
多线程编程之条件变量
Pthread是 POSIX threads 的简称,是POSIX的线程标准。
互斥机制,包括互斥量【C/C++多线程编程之六】pthread互斥量,信号量【C/C++多线程编程之七】pthread信号量,互斥能很好的处理共享资源访问的协调问题,是多线程同步必不可少的机制。互斥机制也有其缺陷,当线程在等待共享资源满足某个条件,...
分类:
编程语言 时间:
2014-05-04 09:12:50
阅读次数:
348
boost::tie()和boost::variant()讲解...
分类:
其他好文 时间:
2014-05-04 09:07:37
阅读次数:
233