![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 80
随心而动随意而行
time waits no man
展开
-
多线程第一篇:使用_beginthreadex创建线程
先来一个CreateThread函数和_beginthreadex函数详解:HANDLE WINAPI CreateThread (_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes , // pointer to security attributes_In_ SIZE_T原创 2013-12-15 08:57:05 · 2956 阅读 · 0 评论 -
多线程第五篇:互斥量Mutex
mutex用于线程或者进程间互斥.mutex特点: 1.是内核对象,拥有所有者. 2.可以用于线程,进程间互斥. 3.互斥对象名唯一标识互斥对象,名字相同,互斥对象必然相同,一对一映射.mutex和临界区比较: 1.临界区不能用于进程间互斥,他属于用户方式的对象,仅能用于线程间互斥,但是运行速度较快.而mutex是内核对象,速度较慢,但可以原创 2013-12-16 00:44:54 · 829 阅读 · 0 评论 -
多线程第三篇:关键段(临界区)
该文章大部分参考自:http://blog.csdn.net/morewindows/article/details/7421759线程之间同步于互斥:问题描述:1.主线程启动10个子线程并将表示子线程序号的变量地址作为参数传递给子线程。2.子线程接收参数 -> sleep(50) -> 全局变量++ -> sleep(0) -> 输出参数和全局变量。原创 2013-12-15 19:01:36 · 957 阅读 · 1 评论 -
多线程第八篇:生产者消费者问题
著名的生产者消费者问题,用到同步和互斥. 1.我们假设缓冲区大小为2,即最多只能放2个资源,并且肯定大于0. 2.生产者和消费者是可以同时进入缓冲区的.代码设计:1.由于window信号量在缓冲区满的时候无法阻塞,所以需要两个信号量,分别表示缓冲区剩余资源和可用资源分别用于阻塞消费者和生产者.2.对于全局资源的存取,所有线程都要互斥.3.原创 2013-12-17 20:59:35 · 630 阅读 · 0 评论 -
多线程第七篇:互斥和同步总结
同步:多个线程(进程)之间有严格的先后顺序,一个线程(进程)的执行,依赖于另一个.互斥:多个线程(进程)没有先后顺序,谁抢到算谁的.注意:线程的创建和执行是分开的,并不是创建后立即执行,而是创建后,等待cpu调度.window中的四种线程(进程)间同步与互斥.criticalSection,mutex,event,semaphorecriticalSec原创 2013-12-16 13:46:14 · 982 阅读 · 0 评论 -
多线程第四篇:event线程同步
event是内核对象,用来实现线程(进程)之间同步: 内核对象:Windows操作系统使用内核对象来管理进程、线程、文件等诸多种类的大量资源。内核对象的创建通常是通过Windows API,比如CreateThread将创建一个线程内核对象,并返回一个内核对象句柄。内核对象实际上是一小块内存,其中包括了引用计数、安全性描述等信息,操作系统通过这一小段内存来管理对应的内核资源。内核对象的原创 2013-12-16 10:14:22 · 684 阅读 · 0 评论 -
面试题中的多线程
子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。#include #include #include int g_count = 10;HANDLE g_ThreadEventSon ,g_ThreadEventFather, g_threadMutex,g_threadSemap原创 2013-12-16 16:05:34 · 694 阅读 · 0 评论 -
多线程第六篇:信号量
信号量及信号量上的操作是E.W.Dijkstra 在1965年提出的一种解决同步、互斥问题的较通用的方法,并在很多操作系统中得以实现, Linux改进并实现了这种机制。 信号量(semaphore )实际是一个整数,它的值由多个进程进行测试(test)和设置(set)。就每个进程所关心的测试和设置操作而言,这两个操作是不可中断的,或称“原子”操作,即一旦开始直到两个操作全部完成。测试和原创 2013-12-16 12:31:55 · 713 阅读 · 0 评论 -
多线程第二篇:多线程中的自加自减等原子操作
本文参考morewindows的博文仅仅稍加更改:http://blog.csdn.net/morewindows/article/details/7429155我们再来深刻的看一下子线程之间竞争的例子://线程报数的例子#include #include #include int g_count = 0;unsigned int __stdcall ThreadFun(L原创 2013-12-15 18:50:43 · 1596 阅读 · 0 评论 -
多线程----原子操作
本人水平有限,如有错误还望指出,不胜感激。原子操作: 原子指不可分割的粒子,计算机中的原子操作指不可中断的操作,或者一条指令或者一组指令。 一般而言一条汇编指令是原子操作。而汇编指令都具有“读取--->修改--->写回”的特性,一般指cpu读取寄存器或内存,进行修改,然后写回寄存器或内存。 win8 + vs2012 c++控制台原创 2013-12-15 19:07:07 · 1213 阅读 · 0 评论 -
进程和线程区别
进程是资源分配的基本单位,线程是资源调度的基本单位.1.所有线程共享进程的地址空间.而进程有独立的地址空间,崩溃后不影响其他进程,而线程崩溃后就会造成整个进程崩溃,所以多进程比多线程个稳定.,2.线程依赖进程而存在,一个进程至少要有一个主线程,而线程不能脱离进程独立存在.3.线程是进程的一条执行路线,一个进程可以同时执行多个线程.4.所有线程共享进程的资源,线程间通信比进程原创 2014-02-13 16:44:29 · 566 阅读 · 0 评论