
并发编程
C小虫
这个作者很懒,什么都没留下…
展开
-
《JAVA并发编程实战---读书笔记1》
这是第2章和第3章的读书笔记1.线程安全当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。2.线程安全的3种方法(1)不再线程间共享数据线程封闭(2)使用不可变的状态不可变性(3)同步状态①Volitile②Sync原创 2016-04-28 17:14:24 · 348 阅读 · 0 评论 -
《JAVA并发编程实战---读书笔记2》
这里是基于书的第4章---对象的组合1.不可变条件以及后验条件(1)不可变条件用于判断状态是有效还是无效的比如,一个long类型的变量,其状态空间从Long.MIN_VALUE到Long.MAX_VALUE并且由程序的实际意义可能要求必须取正值等。(2)后验条件用于判断状态转换的有效性比如,一个递增的计数器,当前状态为17,下一个状态必须是18由于不变性原创 2016-05-03 19:47:42 · 466 阅读 · 0 评论 -
《C++并发编程实战》思考1---线程的结束
#include #include #include void *fun1(void *vargp){ int i; printf("hello, this is t2\n"); //pthread_join(*vargp, NULL); i = pthread_cancel(*((pthread_t *) vargp)); pri原创 2015-10-17 17:00:48 · 546 阅读 · 0 评论 -
《C++并发编程实战》读书笔记2---在线程间共享数据
整本书的2-4章,就是介绍C++11的标准库关于多线程的基本使用。第2章介绍thread,用于创建多线程。第3章介绍mutex,用于共享数据。第4章介绍condition_variable和future,用于同步线程。本帖总结第3章内容。主要的类是互斥量,std::mutex还有上锁的模板类std::lock_guard本章的主要概念为:竞争条件(race condit原创 2015-10-20 14:19:48 · 960 阅读 · 0 评论 -
《C++并发编程实战》读书笔记3---线程同步
1.什么是线程同步线程同步就是说希望一个线程等待特定事件的发生或是一个条件变为true。2.线程同步的种方法(1)条件变量(condition_variable)条件变量就是说,用一个专门的条件变量对象data_cond,它是多个thread都可以访问的。在一个thread中准备好另一个thread等待的条件后,就通知那个等待线程。等待线程收到通知,就知道条件满足,原创 2015-10-29 21:50:47 · 452 阅读 · 0 评论 -
《C++并发编程实战》读书笔记4---并发数据结构queue
对应于书中6.1-6.2节的内容,主要是应用清单6.1-6.10共7个程序来说明问题的。(1)6.1-6.3线程安全栈与队列(2)6.4-6.6控制数据结构详细实现的细粒度锁定(3)6.7-6.10最终作品1.线程安全栈与队列6.1线程安全栈(1)函数成员1个默认构造函数1个拷贝构造函数删除拷贝赋值运算符1个push2个pop1个empty原创 2015-11-03 11:43:05 · 984 阅读 · 0 评论 -
为什么使用并发?
看了《七周七并发模型》《JAVA并发编程实战》《C++并发编程实战》里面关于为什么使用并发(此文不严格区分并发、并行)的介绍,感觉还是《七周七并发模型》归纳地最好,不过另外两本书却提供了不错的例子。(1)性能(效率)这个是最容易理解的,得益于现在多核处理器的流行。使得所有的核心都没有休息,在其他条件不变的情况下,能做更多的任务。(2)简化设计(简化建模)如果你用一条线程来进原创 2015-11-04 11:33:33 · 350 阅读 · 0 评论 -
《C++并发编程实战》读书笔记5---线程池
在C++11标准库中,并没有线程池的标准实现,这一章都是作者利用已有的设施,先实现一个最基本的线程池,然后不断增加一些功能。以下我就列出它每个小节的内容。1.线程池9.1.1简单的线程池(1)最简单的线程池,私有成员包括:线程队列与工作队列接口函数就是:任务提交submit函数。(2)任务队列:thread_safe_queue>提交函数:直接以f构建一个s原创 2015-11-13 11:24:41 · 505 阅读 · 0 评论 -
《C++并发编程实战》读书笔记6---设计并发代码
本帖主要是总结,设计并行累加求和与并行快速排序。1.并行累加求和(1)普通并行版本清单2.8 P26(2)异常安全并行版本清单8.3 P232 使用std::packaged_task清单8.5 P236 使用std::async(3)线程池版本清单9.3 P263 2.并行快速排序(1)std::async版本清单4.13 P90 (2)s原创 2015-11-16 19:43:59 · 427 阅读 · 0 评论 -
《C++并发编程实战》读书笔记7---注意事项
之前刚开始看这本书的时候,对于C++11还有一些其他的东西,比如RAII,异常安全等都比较陌生,而此书又广泛应用了以上提到的东西,所以当时对很多东西都不知所谓。现在回过头来看看,有些东西豁然开朗。2.1.1启动线程(1)启动一个线程,首先要定义一个std::thread对象,在初始化这个对象的时候,使用的是一个可调用对象。再度回忆了C++ Primer 5th,可调用对原创 2015-12-06 23:01:28 · 454 阅读 · 0 评论 -
《C++并发编程实战》读书笔记1---多线程基本使用
这本书,是针对C++11的多线程标准库的一本书。书的作者便是C++这个库的作者,读了第二章,作者对于这个库确实是娓娓道来,另外作者也同时会给出一些并发编程的注意事项。本帖的结构如下1.基本函数使用2.线程joinable的概念3.多线程编程注意事项1.基本函数使用①constructor使用一个函数,或者是一个callable object来初始化一原创 2015-10-17 11:36:27 · 1341 阅读 · 0 评论 -
Java多线程volatile和synchronized
看了慕课网的视频,并发编程网的文章,疯狂Java的教科书。现在就来说说,这两个关键字。1.synchronized (Object obj)synchronized关键字,最令人疑惑的莫过于它后面的一个任意对象的参数了。同步代码块就同步代码块嘛,只要进入同步代码块就实现同步不就可以了吗?其实不是的。在C++并发编程之中,我们就已经知道了,如果你加锁,是有一个锁对象,以及一个原创 2016-05-22 11:11:55 · 333 阅读 · 0 评论