在使用多线程的时候,往往存在一定的公共数据,为了避免多个线程同时操作同一数据,我们需要为线程加锁。加锁的原理:每一个引用类型的对象都有一个同步索引块,指示当前使用该对象的线程数,每个线程执行到Lock语句块的时候就会判断当前锁定项(这里是this,当前窗体对象)的同步索引块是否等于0(即没有线程.....
分类:
编程语言 时间:
2014-06-28 18:33:22
阅读次数:
192
1.CyclicBarrier 表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指定地点集合碰面package org.lkl.thead.foo;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.E....
分类:
编程语言 时间:
2014-06-28 18:30:49
阅读次数:
277
1. 概念 阻塞队列的概念和前面提到的缓冲区的概念类似,常见一个固定长队的队列 ,如果队列满的时候 put数据则一致会阻塞等待,直到队列数据被取走后会立即执行put数据操作同样的道理,如果队列为空时进行取数据take操作,则一直会阻塞等待,知道有线程执行了put数据到队列中后才会立即执行take.....
分类:
编程语言 时间:
2014-06-28 18:30:12
阅读次数:
247
JDK1.4 的 NIO 有效解决了原有流式 IO 存在的线程开销的问题,在 NIO 中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个 CPU 的处理能力和处理中的等待时间,达到提高服务能力的目的。多线程的引入,容易为本来就略显复杂的 NIO 代码...
分类:
编程语言 时间:
2014-06-28 16:37:05
阅读次数:
296
今天由于项目需求(其实是某门课的一个大作业,不好意思说出口啊。。。),想要使用多线程。相信大家一般用的是linux上的POSIX C或windows上的线程库,然而这些线程库以来于特定系统,并不“标准”。2011年发布的C++11标准中提供了并发执行的相关操作:C++11 新标准中引入了四个头文件来...
分类:
编程语言 时间:
2014-06-28 14:43:56
阅读次数:
233
在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率:l 并发l 异步l 缓存下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。1任务队列1.1 以生产者-消费者模型设计任务队列 生产者-消费者模型是人们非常熟悉的模型,比如在....
分类:
编程语言 时间:
2014-06-28 11:30:10
阅读次数:
291
Boost.Thread可以使用多线程执行可移植C++代码中的共享数据。它提供了一些类和函数来管理线程本身,还有其它一些为了实现在线程之间同步数据或者提供针对特定单个线程的数据拷贝。头文件:#include 线程定义boost::thread 类是负责启动和管理线程。每个boost::thread对...
分类:
编程语言 时间:
2014-06-28 11:07:49
阅读次数:
220
前言标准C++线程即将到来。预言它将衍生自Boost线程库,现在让我们探索一下Boost线程库。几年前,用多线程执行程序还是一件非比寻常的事。然而今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率;为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序;GUI应用程序将那些费时,复杂...
分类:
其他好文 时间:
2014-06-24 10:50:32
阅读次数:
291
虽然使用线程池ThreadPool让我们使用多线程变得容易,但是因为是由系统来分配的,如果想对线程做精细的控制就不太容易了,比如某个线程结束后执行一个回调方法。恰好Task可以实现这样的需求。这篇文章我从以下几点对Task进行总结。认识TaskTask的用法认识TaskTask类在命名空间Sys.....
分类:
编程语言 时间:
2014-06-20 15:17:20
阅读次数:
187