Fork me on GitHub

随笔分类 -  多线程与并发

摘要:进程:程序的一次执行(程序载入内存,系统分配资源运行)。每个进程有自己的内存空间,数据栈等,进程之间可以进行通讯,但是不能共享信息。 线程:所有的线程运行在同一个进程中,共享相同的运行环境。每个独立的线程有一个程序入口,顺序执行序列和程序的出口。 线程的运行可以被强占,中断或者暂时被挂起(睡眠),让 阅读全文
posted @ 2019-01-04 11:59 ranjiewen 阅读(1573) 评论(0) 推荐(0) 编辑
摘要:Python的Queue模块提供一种适用于多线程编程的FIFO实现。它可用于在生产者(producer)和消费者(consumer)之间线程安全(thread-safe)地传递消息或其它数据,因此多个线程可以共用同一个Queue实例。Queue的大小(元素的个数)可用来限制内存的使用。 Basic 阅读全文
posted @ 2019-01-04 11:11 ranjiewen 阅读(17467) 评论(0) 推荐(1) 编辑
摘要:c++11中有 mutex (互斥量),有 condition_variable (条件变量),并没有 semaphore (信号量)。信号量,操作系统中一般都有提,后来 google 说可以使用 mutex+condition_variable 实现一个,后来写来写去,都死锁 (deadlock) 阅读全文
posted @ 2016-08-04 15:22 ranjiewen 阅读(7231) 评论(0) 推荐(1) 编辑
摘要:互斥和信号量是多线程编程的两个基础,其原理就不详细说了,大家去看看操作系统的书或者网上查查吧。 对于互斥的实现,无论什么操作系统都离不开三个步骤 1.初始化互斥锁 2.锁操作 3.解锁操作 对于不同的系统只是实现的函数有一些不同而已,但是功能其实都大同小异,在锁操作和解锁操作的时候大部分系统都有超时 阅读全文
posted @ 2016-08-03 21:15 ranjiewen 阅读(2499) 评论(0) 推荐(1) 编辑
摘要:参考: https://github.com/forhappy/Cplusplus-Concurrency-In-Practice/blob/master/zh/chapter3-Thread/Introduction-to-Thread.md#stdthread-%E8%AF%A6%E8%A7%A 阅读全文
posted @ 2016-08-03 19:03 ranjiewen 阅读(3574) 评论(0) 推荐(0) 编辑
摘要:进程之间通信的方式 管道 消息队列 信号 信号量 共享存储区 套接字(socket) 这次主要写的是消息队列,之前讲过的管道和消息队列在本质上就有很大的区别,管道是一个文件,而消息队列是一个数据结构(类似于链表)。这说明了,管道文件是存放在磁盘上的,关机也会存在(尤其是命名管道更为显而易见,你不删除 阅读全文
posted @ 2016-07-05 16:15 ranjiewen 阅读(417) 评论(0) 推荐(0) 编辑
摘要:C++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用起来都比较复杂,C++11提供了新头文件<thread>、<mutex>、<atomic>、<fut 阅读全文
posted @ 2016-06-24 14:58 ranjiewen 阅读(936) 评论(0) 推荐(0) 编辑
摘要:C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD SI 阅读全文
posted @ 2016-06-24 14:34 ranjiewen 阅读(317) 评论(0) 推荐(0) 编辑
摘要:对这个两个常见的windows下的函数学习了一下: 第一个 CreateThread 函数功能:创建线程 函数原型: HANDLE WINAPI CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, L 阅读全文
posted @ 2016-04-27 15:25 ranjiewen 阅读(411) 评论(0) 推荐(0) 编辑
摘要:生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者之间必须保持同 阅读全文
posted @ 2016-04-01 11:00 ranjiewen 阅读(528) 评论(0) 推荐(0) 编辑