【多线程】C++ 互斥锁(mutex)的简单原理分析
2021/7/13 22:08:45
本文主要是介绍【多线程】C++ 互斥锁(mutex)的简单原理分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,分为两种类型的多任务处理:基于进程和基于线程。
1)基于进程的多任务处理是程序的并发执行。
2)基于线程的多任务处理是同一程序的片段的并发执行。
多线程程序包含可以同时运行的两个或多个部分。这样的程序中的每个部分称为一个线程,每个线程定义了一个单独的执行路径。在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。比如说,同一个文件,可能一个线程会对其进行写操作,而另一个线程需要对这个文件进行读操作,可想而知,如果写线程还没有写结束,而此时读线程开始了,或者读线程还没有读结束而写线程开始了,那么最终的结果显然会是混乱的。为了保护共享资源,在线程里也有这么一把锁——互斥锁(mutex),互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即上锁( lock )和解锁( unlock )。
一、创建线程
在Windows下用C++创建线程需要导入windows.h头文件,同时调用CreateThread()函数。如下:
#include <windows.h> HANDLE thread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);
参数说明:
1)In_opt:LPSECURITY_ATTRIBUTES lpThreadAttributes, {安全设置}
2)In SIZE_T:dwStackSize, {堆栈大小}
3)In LPTHREAD_START_ROUTINE:lpStartAddress, {入口函数}
4)In_opt __drv_aliasesMem LPVOID:lpParameter, {函数参数}
5)In DWORD:dwCreationFlags, {启动选项}
6)Out_opt LPDWORD:lpThreadId {输出线程id}
返回值:线程句柄 ,"句柄" 类似指针,但通过指针可读写对象,通过句柄只是使用对象;有句柄的对象一般都是系统级别的对象(或叫内核对象)。
二、创建互斥量
这篇关于【多线程】C++ 互斥锁(mutex)的简单原理分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解