当前位置: 首页 > 科技观察

C++多线程编程:创建线程

时间:2023-03-12 03:56:59 科技观察

多线程是程序员必须掌握的技术。本文主要针对新C++标准中的多线程库。需要有一定的C++基础才能学习。前言本章重点介绍C++多线程编程中的一些基本概念和创建线程的几种方法。并发、进程、线程的基本概念并发两个或多个任务(独立活动)同时发生(进行中):一个程序通知执行多个独立任务并发错觉(不是真正的并发):单核CPU通过上下文切换方式实现流程流程计算机中的程序是关于某个数据集上的一个运行活动。进程特性是动态的:进程是程序的一个执行过程,它是临时的,有生命周期,动态生成,动态消亡;并发性:任何进程都可以与其他进程并发执行;独立性:进程是系统进行资源分配和调度的一个独立单元;结构:一个进程由三部分组成:程序、数据和进程控制块。线程每个进程都有一个主线程,并且主线程是唯一的,即一个进程只能有一个主线程。ctr+f5在vs编译器中编译运行程序时,其实主线程调用的是mian函数中的代码。线程可以理解为一个代码执行通道。除了主线程,其他线程可以自己创建。并发实现方案主要解决的是进程间通信的问题。在同一台计算机上可以通过管道、文件、消息队列、共享内存等方式实现,不同计算机可以通过socket网络通信实现多进程实现并发独立进程,多线程实现并发。主线程和多个子线程实现一个进程中所有线程的并发共享内存空间(sharedmemory),比如全局变量,指针引用等,所以多线程的开销远小于multi-过程。共享内存也会造成数据一致性问题(资源竞争问题)。C++线程编程的基本操作1、首先需要包含线程头文件#include#include2。创建线程:线程类创建线程#includevoidprint(){std::cout<<"subThread"<voidprint(){std::cout<<"sub-thread"<#include#includevoidprint(){for(inti=0;i<10;i++){std::cout<<"子线程"<#includevoidprint(){for(inti=0;i<10;i++){std::cout<<"子线程"<#includeintmain(){std::threadt1([]{std::cout<<"子线程"<#include#在includevoidprintInfo(int&num){num=1001;std::cout<<"Subprocess:"<#include#includevoidprintInfo(std::unique_ptrptr){std::cout<<"子线程:"<ptr(newint(100));std::cout<<"mainthread:"<#include#includeclassMM{public:voidprint(int&num){num=1001;std::cout<<"sub-thread:"<