C++ 多线程
文章平均质量分 70
蓝色枫叶
这个作者很懒,什么都没留下…
展开
-
C++多线程同步之Semaphore(信号量)
一、线程间同步的几种方式从上篇博文中可以发现,当多个线程对同一资源进行使用时,会产生“争夺”的情况,为了避免这种情况的产生,也就出现了线程间的同步这个技术。线程间的同步有多种方式,在接下来的博文中我会依次介绍几种主流的同步方式,以及他们之间的区别。在本篇博文中将介绍使用信号量Semaphore达到线程间同步的目的。老规矩,所有代码都讲在win32平台和Linux平台下都实现一遍。相关函数和头文件//原创 2016-10-24 16:06:40 · 7475 阅读 · 2 评论 -
C++ 多线程之创建多线程CreateThread
一、为什么要写这篇博客一直对C++多线程一知半解,感觉没有实际进入过C++多线程的世界,因此想从头开始慢慢真正进入C++多线程,真正了解多线程。因为我也想了解Linux下的C++ 编程,因此我也会在Linux平台下进行编写代码并验证。文章里面会借鉴一些网上优秀的代码和讲解,但买一行代码我都会自己敲一遍,学习和借鉴是一起的,但代码必须是自己一行一行写的才行。这里的开头也是希望自己能记住自己的初衷!二、原创 2016-08-25 17:18:10 · 11614 阅读 · 1 评论 -
关于CreateThread()的几点疑惑
一、为什么要特意去CloseHandle()?线程中止运行后,线程对象仍然在系统中,必须通过CloseHandle函数来关闭该线程对象。CloseHandle函数的原型是:BOOL CloseHandle( HANDLE hObject );//HANDLE hObject 对象句柄CloseHandle可以关闭多种类型的对象,比如文件对象等,这里使用这个函数来关闭线程对象。调用时,hObject为原创 2016-11-08 11:24:00 · 1592 阅读 · 0 评论 -
C++多线程同步之事件(Event)
一、事件(Event)原理解析线程同步Event,主要用于线程间的等待通知。 内核对象中,事件内核对象是个最基本的对象。 事件包含一个使用计数(与所有内核对象一样),一个用于指明该事件是个自动重置的事件还是人工重置的事件的布尔值,另一个用于指明该事件处于已通知状态还是未通知状态的布尔值。事件能够通知一个操作已经完成。 有两种不同类型的事件对象。一种是人工重置的事件,另一种是自动重置的事件原创 2016-11-29 12:02:53 · 3289 阅读 · 0 评论 -
C++互斥锁 临界区 信号量 事件的区别总结
转自http://blog.csdn.net/anddy926/article/details/7828173四种进程或线程同步互斥的控制方法 1、临界区CriticalSection: 通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量Mutex: 为协调共同对一个共享资源的单独访问而设计的。 3、信号量Semaphore: 为控制一个具有有限数量用户资转载 2016-11-29 16:43:27 · 2635 阅读 · 0 评论 -
C++多线程同步之临界区(CriticalSection)
一、Win32平台1、相关头文件和接口#include <windows.h>CRITICAL_SECTION cs;//定义临界区对象InitializeCriticalSection(&cs);//初始化临界区EnterCriticalSection(&cs);//进入临界区LeaveCriticalSection(&cs);//离开临界区DeleteCriticalSection(&c原创 2016-11-21 19:47:45 · 2608 阅读 · 0 评论