多线程编程可以应用在哪里?C++多线程详解.docx
《多线程编程可以应用在哪里?C++多线程详解.docx》由会员分享,可在线阅读,更多相关《多线程编程可以应用在哪里?C++多线程详解.docx(21页珍藏版)》请在第一文库网上搜索。
1、多线程编程可以应用在哪里?C+多线程详解在出学习过程中,要想“更上一层楼”的话,多线程编程是必不可少的一步,前面的文章多半是基础方面的内容,这节的话稍微有点拔高。所以说,我们在看这篇文章的时候,大家需要更多的思考是为什么这么做?这样做的好处是什么?以及多线程编程都可以应用在哪里?话不多说,跟着我一起认真探讨这块内容。1、多线程传统的C+(C+11标准之前)中并没有引入线程这个概念,在C+11出来之前,如果我们想要在C+中实现多线程,需要借助操作系统平台提供的也1,比如1inUX的,或者WindOWS下的。C+11提供了语言层面上的多线程,包含在头文件中。它解决了跨平台的问题,提供了管理线程、保
2、护共享数据、线程间同步操作、原子操作等类。C+11新标准中引入了5个头文件来支持多线程编程,如下图所示:11、多进程与多线程多进程并发使用多进程并发是将一个应用程序划分为多个独立的进程(每个进程只有一个线程),这些独立的进程间可以互相通值,共同完成任务。由于操作系统对进程提供了大量的保护机制,以避免一个进程修改了另一个进程的数据,使用多进程比使用多线程更容易写出相对安全的代码。但是这也造就了多进程并发的两个缺点:在进程间的通信,无论是使用信号、套接字,还是文件、管道等方式,其使用要么比较复杂,要么就是速度较慢或者两者兼而有之。运行多个线程的开销很大,操作系统要分配很多的资源来对这些进程进行管理
3、。当多个进程并发完成同一个任务时,不可避免的是:操作同一个数据和进程间的相互通信,上述的两个缺点也就决定了多进程的并发并不是一个好的选择。所以就引入了多线程的并发。多线程并发多线程并发指的是在同一个进程中执行多个线程。优点:有操作系统相关知识的应该知道,线程是轻量级的进程,每个线程可以独立的运行不同的指令序列,但是线程不独立的拥有资源,依赖于创建它的进程而存在。也就是说,同一进程中的多个线程共享相同的地址空间,可以访问进程中的大部分数据,指针和引用可以在线程间进行传递。这样,同一进程内的多个线程能够很方便的进行数据共享以及通信,也就比进程更适用于并发操作。缺点:由于缺少操作系统提供的保护机制,
4、在多线程共享数据及通信时.,就需要程序员做更多的工作以保证对共享数据段的操作是以预想的操作顺序进行的,并且要极力的避免死锁(deb1ock)。12、多线程理解单CPU内核的多个线程。一个时间片运行一个线程的代码,并不是真正意义的并行计算。多个cpu或者多个内核可以做到真正的并行计算。13、创建线程创建线程很简单,只需要把函数添加到线程当中即可。std:threadmyThread(thread_fun);函数形式为VOidthread_fun()myThread.join();同一个函数可以代码复用,创建多个线程形式2:std:threadmyThread(thread-fun(100);my
5、Thread.join();函数形式为VOidthread_fun(intx)同一个函数可以代码复用,创建多个线程形式3:std:thread(thread_fun,1).detach();直接创建线程,没有名字函数形式为VOidthread_fun(intx)ForExamp1e使用g+编译下列代码的方式:g+test,cc-0test-Ipthread#inc1udeinc1udeusingnamespacestd;voidthread_1()COUt“子线程1,end1;)voidthread2(intx)cout,z:zzxend11.4、join与detach方式当线程启动后,一定要
6、在和线程相关联的thread销毁前,确定以何种方式等待线程执行结束。比如上例中的join。detach方式,启动的线程自主在后台运行,当前的代码继续往下执行,不等待新线程结束。join方式,等待启动的线程完成,才会继续往下执行。可以使用joinab1e判断是join模式还是detach模式。if(myThread.joinab1eO)foo.joinO;(1) join举例下面的代码,join后面的代码不会被执行,除非子线程结束。inc1udeinc1udeusingnamespacestd;voidthread_1()whi1e(1)CoUt子线程1111,end1;)voidthread_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多线程 编程 可以 应用 哪里 C+ 详解