多线程多进程
文章平均质量分 87
FreedomRoad~
专注于app底层/架构/算法/业务工作流程,记录进步的足迹和感悟。
展开
-
异步事件回调机制原理探索
自定义的异步事件回调机制:可以在自己的应用程序中,先注册事件和事件对应的回调函数(回调函数可以是函数指针法,虚函数方法的方式);自己程序中每帧检测事件是否发生或者条件是否满足,满足的时候就进入回调函数。如果这样的检查是在同一个线程中那么就是同步的延迟调用,如果是在子线程中就是异步调用,但是这样的性能还是比较差的,除非不得以,否则还是用OS的异步回调机制性能高。OS层面的异步事件回调机制原创 2015-03-15 12:58:02 · 7498 阅读 · 2 评论 -
C++多线程实例之互斥量同步
要点:将互斥量 + 条件变量/事件对象封装为了一个类CMutexLock,该类同时支持windows和linux下的互斥量同步。对熟悉windows和linux下面的多线程开发很有帮助。下面的代码可以直接在VS2008,2010中编译通过,linux下也是没问题的。如果你觉得写得不错也可以直接移植到你的代码库中,比较适合多线程中采用生产者-消费者这样的场景,比如子线程读取和解析文件生产给其它线程用原创 2015-03-21 22:39:02 · 5096 阅读 · 0 评论 -
C++多线程实例-信号量
windows下的信号量:使用信号量内核对象进行线程同步主要会用到 CreateSemaphore()、OpenSemaphore()、ReleaseSemaphore()、 WaitForSingleObject()和WaitForMultipleObjects(),CloseHandle()关闭信号量等函数。其中,CreateSemaphore()用来 创建一个信号量内核对象,其函转载 2015-03-23 00:01:49 · 4252 阅读 · 0 评论 -
C++多线程实例之临界区同步
临界区的特点:非内核对象,只能在window下使用,linux下不能使用;只能在同一进程内的线程间使用,速度快。互斥量特点:互斥量是内核对象,可以用于进程内也可以在进程间互斥,速度相对互斥量慢点,也可以解决某进程意外终止所造成的“遗弃”问题。临界区和互斥量都是只能互斥,不能同步,因为它们都有“线程所有权”,一旦拥有可以进行多次锁定。可以通过内核对象(linux下是条件变量)设置无信号阻原创 2015-03-22 09:51:54 · 3445 阅读 · 0 评论 -
线程属性pthread_attr_t和多线程常用函数
一、线程属性pthread_attr_t简介 来自:http://blog.csdn.net/hudashi/article/details/7709413本文编辑整理自:http://hi.baidu.com/7828058/blog/item/256e16decd1a385e94ee3784.htmlhttp://www.ibm.com/developerworks/cn/转载 2015-03-21 10:46:05 · 1822 阅读 · 0 评论 -
进程间线程间的同步锁原理和种类
同步锁的基本概念:锁基本都是内核对象,用于控制多线程间多进程间的同步访问。我们知道进程间的同步操作都是要借助内核来完成的,和同一个进程中的线程同步只需要在用户模式下是有很大差别的,当然,对于进程安全的,对于线程肯定也是 安全的,但在用户模式下的线程同步所需消耗的代价相对于通过内核完成的同步是很小的。所以不要利用进程同步的方式来进行同一进程中线程的同步。同步锁的种类:互斥量和条件原创 2015-03-16 23:47:30 · 6255 阅读 · 0 评论 -
多线程原理、线程安全函数和多线程程序需要注意的问题
一、多线程使用情景:1.用户需要同时得到多个反馈,例如下载过程中进度条改变,读取文件的时候显示结果。2.提高程序执行性能,提高CPU使用效率,。多线程的主要是需要处理大量的IO操作或者处理的情况需要花大量的时间等等,比如读写文件,网络数据接收,视频图像的采集,处理显示保存等操作缓慢的情形和需大幅度的提高性能的程序中使用。但也不是都使用多线程,因为多线程过多的线程一般原创 2015-03-17 08:13:40 · 11649 阅读 · 0 评论 -
多进程和多进程间通信
一、进程空间和多进程父子关系:进程是分配资源的最小单位(进程内存空间)。fork后,子进程会复制父进程的task_struct结构;并为子进程的堆栈分配物理页(开始只是标记为只读的),延迟到当父或子线程尝试写这些区域,内核才为需要修改的那片内存拷贝副本。二、进程间通信方式:1. 共享内存(share memory),信号量(semaphore/sɛməˌfɔr/)。原创 2015-03-17 07:55:18 · 5338 阅读 · 0 评论 -
多进程和多线程的选择
一、多进程和多线程的基本概念"进程是资源分配的最小单位,线程是CPU调度的最小单位"凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身; 所有由用户启动的进程都是用户进程。 在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多任务。进程是操作系统进行资源分配的单位,进程拥有进程空间里面的文件句柄,堆内存,全原创 2015-03-17 08:32:39 · 1239 阅读 · 0 评论 -
多线程多进程同步技术的选择
1.多对一,包含了一个资源队列: 多个线程一个资源(一个资源队列), 可以用互斥量(或临界区或只有一个资源的信号量)+事件对象(条件变量)来实现对该资源(资源队列)的同步高效访问;同一个进程下windows下用临界区效率比较高,其它内核对象要1000都CPU周期调度时间;linux下没有必要用在进程间的就限定在同一个进程中也可以有效提高性能。使用情景:异步读取线程,异步网络接收数据原创 2015-03-23 00:07:42 · 1429 阅读 · 0 评论