c++开发过程中遇到的线程问(二)

MFC多线程编程的核心对象

Event、Mutex、Semaphore、  file、file-mapping、process、thread

前三个用于线程的同步化。

(1)

进程操作:CreateProcess(); TerminateProcess();ExitProcess();

线程操作:CreateThread();ExitThread()主要是系统调用的;TerminateThread()别的线程强制终止掉它,太过毒辣,少用为妙。

(2) CriticalSection、Mutex、Semaphore、Event之间的区别

CriticalSection临界区:EnterCriticalSection()、LeaveCriticalSection();主要为了保护数据,必须成对出现,进程内使用,线程独占数据。

Mutex互斥量:CreateMutex()、OpenMutex()、ReleaseMutex()、WaitForSingleObject()和WaitForMultipleObjects();创建互斥句柄,可以跨进程调用,线程独占数据。

Semaphores信号量:CreateSemaphore();ReleaseSemaphore();类似PV操作,OpenSemaphore();WaitForSingleObject();WaitForMultipleObjects();可跨进程,可以多个线程同步使用,不能超过信号量的最大数。

Event事件:CreateEvent();OpenEvent();SetEvent();WaitForSingleObject();WaitForMultipleObjects();可跨进程数据同步,运行状态时无信号,退出状态时有信号。可以用WaitForSingleObject();、WaitForMultipleObjects()等待进程和进程退出。

时间: 2024-10-18 18:52:45

c++开发过程中遇到的线程问(二)的相关文章

c++开发过程中遇到的线程问题

多线程编程,在不同的编程语言或库下面有不同的 多线程方法. 如 MFC下的 pThread = AfxBeginThread(mythread2, (LPVOID)this, NULL); 不太好用. 下面是C++标准库下的多线程编程方法,多线程编程一般都与信号关联,通过信号来决定线程的启动.挂起.重启.关闭等. 主要有这几个函数 1.创建一个信号 Handle hEvent =  CreateEvent(NULL,true,true,NULL); 2.创建一个线程 Handle hThread

python基础-------进程线程(二)

Python中的进程线程(二) 一.python中的"锁" 1.GIL锁(全局解释锁) 含义: Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(Global Interpreter Lock)来互斥线程对Python虚拟机的使用.为了支持多线程机制,一个基本的要求就是需要实现不同线程对共享资源访问的互斥,所以引入了GIL.GIL:在一个线程拥有了解释器的访问权之后,其他的所有线程都必须等待它释放解释器的访问权,即使这些线程的下一条指令并不会互相影响.在

Objective-C中不同方式实现锁(二)-11-多线程

1 Objective-C中不同方式实现锁(二) 2 3 在上一文中,我们已经讨论过用Objective-C锁几种实现(跳转地址),也用代码实际的演示了如何通过构建一个互斥锁来实现多线程的资源共享及线程安全,今天我们继续讨论锁的一些高级用法. 4 5 1.NSRecursiveLock递归锁 6 7 平时我们在代码中使用锁的时候,最容易犯的一个错误就是造成死锁,而容易造成死锁的一种情形就是在递归或循环中,如下代码: 8 9 1 10 2 11 3 12 4 13 5 14 6 15 7 16 8

C#中的线程(二)线程同步

C#中的线程(二)线程同步 Keywords:C# 线程Source:http://www.albahari.com/threading/Author: Joe AlbahariTranslator: Swanky WuPublished: http://www.cnblogs.com/txw1958/Download:http://www.albahari.info/threading/threading.pdf 第二部分:线程同步基础 同步要领 下面的表格列展了.NET对协调或同步线程动作的

android app 开发过程中 对于性能优化的总结

一款手机应用  从开发过程中就要做好 性能优化,这样才能 让用户体验度 提升, 假如 我们打开一个应用 出现卡顿, 不流畅,则会很影响 用户对该应用的态度,产品狗 都很注意这些人机交互方面的 体验. 谷歌官方也是一直在优化 android 系统,不论是  碎片化处理 还是 系能 上面,这方面 ios 就做的比较好,配置比 android 低,但是流畅度却比android高,体验效果更好. 官方推荐方案:http://www.oschina.net/news/60157/android-perfo

Android开发过程中的部分经验总结

该文章为Android App 开发过程中遇到的常见问题总结,该总结也会持续不断的优化 完善当中.后续开发中一定会遇到各种各样的问题, 这些问题会酌情不断补充进来. 我将遇到的问题分为两大类,非技术问题和技术问题. 一. 非技术问题. 非技术上的问题一般为项目的管理问题,重点是项目开发过程中的协调沟通问题. 1. 项目的开展. 2. 项目的进展. 3. 项目的跟踪. 4. 项目完成总结与评价. 二. 技术层面的问题. 1.  代码规范问题. 该问题曾在公司内部的技术分享群中我曾经提出过,我个人认

.NET开发过程中的全文索引使用技巧之Solr(转)

前言:相信许多人都听说过.net开发过程中基于Lucene.net实现的全文索引,而Solr是一个高性能,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引引擎,这里我就绕过Lucene,直接说Solr的应用了,总之,Solr比Lucene更加方便简洁好用,而且上手快,开发效率高.    Solr应用场景:涉及到大数据的全文搜索.尤其是电子商务平

C++11线程指南(二)--Lambda线程实现

1. Thread with lambda function 基于前一章中的Lambda程序,我们进行了扩展,当前创建5个线程. #include<iostream> #include<thread> #include<vector> #include<algorithm> int main() { std::vector<std::thread> threadVec; for(int i=0; i<5; ++i){ threadVec.p

net开发过程中Bin目录net开发过程中Bin目录下面几种文件

.net开发过程中Bin目录下面几种文件格式的解释 在.NET开发中,我们经常会在bin目录下面看到这些类型的文件: .pdb..xsd..vshost.exe..exe..exe.config..vshost.exe.config 项目发布的时候,往往搞不清楚哪些是需要的,那些是不需要的.那么这些格式的文件到底是干什么用的呢? pdb .pdb文件,是VS生成的用于调试的符号文件(program database),保存着调试的信息.在VS的工程属性,C/C++,调试信息格式,设置/Zi,那么