网站建设资讯

NEWS

网站建设资讯

C++中怎么创建线

C++中怎么创建线,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

专注于为中小企业提供网站设计、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业博白免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

并发、进程、线程的基本概念

并发两个或者多个任务(独立的活动)同时发生(进行):一个程序通知执行多个独立的任务并发假象(不是真正的并发):单核CPU通过上下文切换方式实现进程

进程计算机中的程序关于某数据集合上的一次运行活动

进程特性

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 动态性:进程是程序的一次执行过程,是临时的,有生命期,是动态产生,动态消亡的;

  3. 并发性:任何进程都可以同其他进行一起并发执行;

  4. 独立性:进程是系统进行资源分配和调度的一个独立单位;

  5. 结构性:进程由程序,数据和进程控制块三部分组成

线程每个进程都有一个主线程并且主线程是唯一的,也就是一个进程只能有一个主线程。vs编译器中ctr+f5编译运行程序时,实际是主线程调用mian函数中的代码。线程可以理解为代码执行通道,除了主线程之外,可以自己创建其他线程。

并发实现方案

主要解决是进程间通信问题

同一电脑上可通过管道,文件,消息队列,共享内存等方式实现

不同电脑可通过socket网络通信实现

多个进程实现并发

单独进程,多个线程实现并发  即一个主线程,多个子线程实现并发一个进程中的所有线程共享内存空间(共享内存),例如全局变量,指针引用等,所以多线程开销远远小于多进程。共享内存也会导致数据一致性问题(资源竞争问题)。

C++线程编程基本操作

1.首先需要包含thread头文件

#include  #include 

2.创建线程: thread类创建一个线程

#include  void print() {  std::cout<<"子线程"<

3.join:加入/汇合线程。阻塞主线程,等待子线程执行结束,可理解为依附功能

#include  void print() {  std::cout<<"子线程"<

4.detach:分离,剥离依附关系,驻留后台

#include  #include  #include  void print()  {  for (int i = 0; i < 10; i++)   {   std::cout << "子线程"<

注意:一旦detach线程后,便不可再使用join线程。

5.joinable:判断当前线程是否可以join或deatch,如果可以返回true,不能返回false

#include  #include  void print()  {  for (int i = 0; i < 10; i++)   {   std::cout << "子线程"<

其他创建线程方法

1.用类和对象

#include  #include  class Function  { public:  void operator()()  {   std::cout << "子线程" << std::endl;  } }; int main()  {  Function object;  std::thread t1(object);    //可调用对象即可  t1.join();  std::thread t2((Function()));  t2.join();  std::cout << "主线程" << std::endl;  return 0; }

2.Lambda表达式

#include  #include  int main()  {    std::thread t1([] {std::cout << "子线程" << std::endl; });  t1.join();  std::cout << "主线程" << std::endl;  return 0; }

3.带引用参数创建方式

#include  #include  #include  void printInfo(int& num)  {  num = 1001;  std::cout << "子进程:"<

4.带智能指针参数创建方式

#include  #include  #include  void printInfo(std::unique_ptr ptr)  {  std::cout << "子线程:"< ptr(new int(100));  std::cout << "主线程:" << ptr.get() << std::endl;    std::thread t(printInfo,std::move(ptr));      t.join();  std::cout << "主线程:"<

5.类的成员函数

#include  #include  #include  class MM  { public:  void print(int& num)  {   num = 1001;   std::cout << "子线程:"<

关于C++中怎么创建线问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


网站栏目:C++中怎么创建线
转载来于:http://njwzjz.com/article/gioggh.html