C++学习,多线程

C++ 多线程编程是一种强大的编程技术,它允许你的程序同时执行多个任务。在 C++11 及以后的版本中,标准库提供了对多线程的支持,主要通过 <thread><mutex><condition_variable><future><atomic> 等头文件实现。

线程是程序中的轻量级执行单元,允许程序同时执行多个任务。多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。

一般情况下,两种类型的多任务处理:基于进程和基于线程

  • 基于进程的多任务处理是程序的并发执行。
  • 基于线程的多任务处理是同一程序的片段的并发执行。

线程

  • 线程是程序执行中的单一顺序控制流,多个线程可以在同一个进程中独立运行。
  • 线程共享进程的地址空间、文件描述符、堆和全局变量等资源,但每个线程有自己的栈、寄存器和程序计数器。

并发与并行 

  • 并发:多个任务在时间片段内交替执行,表现出同时进行的效果。
  • 并行:多个任务在多个处理器或处理器核上同时执行。

 

线程示例:

#include <iostream>  
#include <thread>  
  
void threadFunction() {  
    std::cout << "Hello from thread\n";  
}  
  
int main() {  
    std::thread t(threadFunction);  
    t.join(); // 等待线程完成  
    return 0;  
}

 

线程声明周期

  • 启动线程:通过创建 std::thread 对象并传递一个可调用对象给其构造函数来启动线程。

  • 等待线程完成:使用 join() 方法等待线程完成。如果主线程(或任何其他线程)在子线程完成之前结束,程序将终止,子线程将不会正常完成。

  • 分离线程:使用 detach() 方法可以使线程独立于主线程运行。一旦分离,线程将自行管理其生命周期,主线程将不再等待它完成。

  • 中断线程:C++标准库不提供直接中断线程的机制。通常,你需要设计一种协作方式来中断线程,例如,使用原子变量来检查是否应该停止执行,或者使用条件变量来等待中断信号。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值