
多线程多进程
文章平均质量分 54
常用的多线程和多进程知识
欧特克_Glodon
C++开发Qt/MFC,三维可视化,OpenGL/OSG/VTK/cesium,3D医学影像可视化开发,GIS应用开发,AutoCAD二次开发(Arx开发),矿山智能通风算法研究。
展开
-
C++多线程同步的5种方式:互斥锁mutex、条件变量condition_variable、信号量sempahore、异步操作future、原子操作atomic
C++多线程同步的5种方式讲解:互斥锁mutex、条件变量condition_variable、信号量sempahore、异步操作future、原子操作atomic。原创 2022-08-30 13:49:01 · 2052 阅读 · 0 评论 -
C++11多线程std::thread入门使用以及对比分析pthread
多数线程池样例一直都是用pthread的API写C++的多线程程序。但从C++11开始,标准库里已经包含了对线程的支持,因此将pthread与std::thread的用法做一个详细对比。std::thread对比于pthread的优缺点:简单,易用跨平台,pthread只能用在POSIX系统上(其他系统有其独立的thread实现)提供了更多高级功能,比如future更加C++(跟匿名函数,std::bind,RAII等C++特性更好的集成)没有RWlock。...原创 2022-08-18 17:14:05 · 2266 阅读 · 0 评论 -
C++线程池案例实现讲解及参考
C++线程池案例实现讲解及参考,提供多种实现方式源码原创 2022-08-18 16:42:14 · 980 阅读 · 0 评论 -
windows下使用pthread库方法
最近在看线程池和多线程并发的相关知识点,总是遇到pthread.h这个库头文件,然后查阅后发现这个库大部分情况都是在Linux系统下使用的,windows系统想要使用的话必须自己去编译一下,因此开始从网上找源码包编译。找到的资源数据如下所示,包含各个不同版本的VS工程,直接用VS打开就可以进行编译了,并且支持动态库和静态编译。1、pthread源码(可自行编译各个版本)2、编译好的vs2019x64版本。...原创 2022-08-18 15:38:53 · 4767 阅读 · 0 评论 -
Qt基础篇:多线程QThread的两种启用用法
Qt基础篇:多线程QThread的两种启用用法原创 2022-04-18 11:14:41 · 698 阅读 · 0 评论 -
MFC关于进程使用:创建、关闭及查询进程
// 启动进程bool StartProgress(CString& strError){ CString strExeName; strExeName.Format(_T("%s"), _T("test.exe")); CString strsCommandLine; char chCommandLine[MAX_PATH]; DWORD dwExitCode; PROCESS_INFORMATION pi; STARTUPINFO si;//用于指定原创 2022-03-01 13:38:49 · 982 阅读 · 0 评论 -
多线程入门知识介绍
1、为什么引入线程 为了实现服务端并发处理客户端请求,我们介绍了多进程模型、select和epoll,这三种办法各有优缺点。创建(复制)进程的工作本身会给操作系统带来相当沉重的负担。而且,每个进程有独立的内存空间,所以进程间通信的实现难度也会随之提高。且进程的切换同样也是不菲的开销。什么是进程切换?我们都知道计算机即便只有一个CPU也可以同时运行多个进程,这是因为系统将CPU时间分成多个微小的块后分配给多个进程,比方进程B在进程A之后执行,当进程A所分配的CPU时间到点之后,要开始执行进程B,此时需原创 2021-12-27 13:32:36 · 223 阅读 · 0 评论 -
windows线程池:利用完成端口IOCP来调度管理多线程的用法示例
windows线程池:利用完成端口IOCP来调度管理多线程的用法示例原创 2021-12-16 18:07:14 · 1109 阅读 · 0 评论 -
关于线程池CThreadPool的用法示例详解
一 、使用线程池的好处池化技术应用 :线程池、数据库连接池、http连接池等等。池化技术的思想:主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池提供了一种限制、管理资源的策略。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。使用线程池的好处:降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度:当任务到达时,可以不需要等待线程创建就能立即执行。提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用原创 2021-12-03 11:30:21 · 2287 阅读 · 0 评论 -
内存池的简单设计案例源码(含线程锁)
头文件 MemoryPools.h#pragma once//尝试开发一个内存池,用于内存管理。#include <stdio.h>#include <stdlib.h>#include "ThreadLock.h"#define MAX_MEMORYHEAD_SIZE 12 //4个字节的指针块地址 + 4个字节的链表首地址 + 4位验证码#define MAGIC_CODE 0x123456 //验证码#define原创 2021-11-26 11:28:10 · 1035 阅读 · 0 评论 -
多线程以及pthread线程库的使用
一.什么是线程 线程是 CPU 调度的最小执行单位,你可以创建一个线程用于 ListenMusic,再创建一个线程去 PlayGame,这样操作系统就是同时处理这两个任务的(并发)。 二.pthread库 (1) 使用说明 POSIX 标准定义了一套线程操作相关的......转载 2021-11-26 11:19:16 · 2364 阅读 · 0 评论 -
多线程处理数据案例——对比单线程和多线程处理数据的速度
一、功能说明最近进行一个功能优化工作,涉及到数据的传输,由于散乱的小文件太多的缘故,因此在数据传输过程中非常慢。计划通过对文件夹进行压缩后传输二进制压缩包的方式提升网络传输效率。前期需要对某个目录下的所有文件夹逐个压缩为zip包,此处引入多线程处理和单线程处理,对比一下压缩速度。代码并未提供全部,主要是为了记录多线程处理文件时参数分配以及进度界面显示问题。二、功能界面三、主要功能代码// MutiThreadDlg.h : 头文件//#pragma once#include "af原创 2021-11-16 14:49:20 · 1415 阅读 · 0 评论 -
c++ 进程锁:在进程间使用Windows的互斥锁Mutex
说明:当多个进程对计算机上的同一份文件进行操作时候,需要对文件进行保护,防止多个进程同时对文件进行修改造成错误,因此可采用Windows的互斥锁Mutex来进行加锁。// CreatMutex.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdio.h>#include <windows.h>#include <iostream>using namespace std;int main()原创 2021-11-10 10:48:45 · 6338 阅读 · 2 评论 -
C++11线程——std::thread
C++11 提供头文件thread,使用std的thread实例化一个线程对象创建。#include<iostream>#include<thread>#include<mutex>using namespace std;mutex m;int cnt = 10;void thread1() { while (cnt > 5){ lock_guard<mutex> lockGuard(m); i原创 2021-10-29 17:12:10 · 265 阅读 · 0 评论 -
通过命令行参数创建进程来启动exe程序
在基于对话框的MFC项目的.cpp文件中,可以对函数InitInstance()修改来进行执行不同的命令行参数:BOOL CMyDialogApp::InitInstance(){//TODO: call AfxInitRichEdit2() to initialize richedit2 library. // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonContro原创 2020-12-02 16:34:00 · 1022 阅读 · 0 评论 -
WaitForMultipleObjects函数介绍
1、定义:WaitForMultipleObjects是Windows中的一个功能非常强大的函数,几乎可以等待Windows中的所有的内核对象函数原型为:DWORD WaitForMultipleObjects(DWORD nCount, // number of handles in the handle arrayCONST HANDLE *lpHandles, // pointer to the object-handle arrayBOOL fWaitAll, // wait fla原创 2020-11-24 22:41:41 · 3345 阅读 · 0 评论 -
利用事件Event进行线程或进程间的通信
1、在服务端exe或dll创建事件Event及独立线程(循环)来监听信号bool m_bBeginPreview = false;bool m_bEndPreview = false;// 启动监听“开始工作”线程DWORD WINAPI ThreadBeginPreview(LPVOID pData){ m_bBeginPreview = true; HANDLE hBeginPreview = ::CreateEvent(NULL, FALSE, FALSE, _T("BeginPr原创 2020-09-03 10:30:22 · 983 阅读 · 0 评论 -
MFC防止同一个exe应用程序多次启动
// 唯一的一个 CLoaderApp 对象CLoaderApp theApp;// CLoaderApp 初始化BOOL CModelDownLoaderApp::InitInstance(){ // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls;原创 2020-11-25 10:08:15 · 1359 阅读 · 0 评论 -
C++之多线程入门
1、最简单的多线程任务及利用Mutex实现线程互斥,运行效果如下:2、代码如下:// MultiThread.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <windows.h>#include <stdio.h>DWORD WINAPI Fun1Proc(LPVOID lpParameter);DWORD WINAPI Fun2Proc(LPVOID lpParameter);unsigned int nTicke原创 2020-06-14 00:47:15 · 251 阅读 · 0 评论 -
共享内存文件CMemFile的创建修改及使用
1.CMemFile的创建bool CreatCMemFileForA(){ CMyJsonObj jsnPass; jsnPass.AddItem(_T("name"), _T("James")); jsnPass.AddItem(_T("age"), _T("18")); jsnPass.AddItem(_T("addr"), _T("China")); CString strJsonBuf = jsnPass.CreateJson();// 将文件内容转为字符串 // 多字节转Uni原创 2020-09-03 10:15:01 · 918 阅读 · 0 评论 -
多线程对比:通过创建线程的方式来同步MFC进度条显示
一、功能说明目的:当主线程需要处理大量数据导致耗费时间很长时,主线程界面的进度条会卡顿不刷新,无法实时保持进度,因此需要将进度条显示与数据处理分开,将数据处理过程放在新建的线程中,主界面主要用来显示进度情况。而处理数据又可进一步拆分为多个线程且需要线程互斥,此功能演示情况如下:1) 单线程处理数据:主界面线程 + (数据处理子线程1);共2个线程 <主+子>2) 多线程处理数据:主界面线程 + (数据处理子线程4);共5个线程 <主+子*4>二、功能实现// Muti原创 2021-09-22 14:25:22 · 1233 阅读 · 0 评论 -
在多线程里使用cout输出内容重叠问题
测试多线程时候采用了:cout <<"" << endl;进行输出,但输出会存在问题应该是因为cout自身机制的缓冲的问题,建议改为printf()输出即可解决。原创 2020-05-31 00:32:03 · 1256 阅读 · 0 评论 -
进程创建CreateProcess()函数简单应用
STARTUPINFO startInfo; PROCESS_INFORMATION proInfo; ZeroMemory(&startInfo, sizeof(startInfo)); startInfo.cb = sizeof(startInfo); ZeroMemory(&proInfo, sizeof(proInfo)); st...原创 2020-04-08 23:18:38 · 588 阅读 · 0 评论 -
通过进程ID或进程名获取进程的句柄,可强制关闭进程
通过进程名称获取ID 再用ID获取句柄,//通过进程ID获取进程句柄HANDLE GetProcessHandleByID(int nID){ return OpenProcess(PROCESS_ALL_ACCESS, FALSE, nID);}//通过进程名(带后缀.exe)获取进程IDDWORD GetProcessIDByName(CString pName){ HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPRO原创 2021-09-24 15:47:28 · 2099 阅读 · 0 评论 -
C++多线程函数CreateThread()简单实例
https://blog.youkuaiyun.com/ferrari_hong/article/details/79742674原创 2020-11-23 15:03:03 · 1278 阅读 · 0 评论