C++多线程--为什么要使用多线程、线程的简单使用

原因

1、任务分解:将耗时的操作进行分解,实现实时响应

2、数据分解:充分利用多核CPU处理数据

3、数据流分解:可同时完成几件事而不相互干扰,如读写分离等

优点

1.使用线程可以把占据时间长的程序中的任务放到后台去处理

2.用户界面更加吸引人,这样比如用户点击了一个按钮去触发某件事件的处理,可以弹出一个进度条来显示处理的进度

3.程序的运行效率可能会提高

4.在一些等待的任务实现上如用户输入,文件读取和网络收发数据等,线程就比较有用了.

缺点

1.如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换.

2.更多的线程需要更多的内存空间

3.线程中止需要考虑对程序运行的影响.

4.通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生

//线程演示
#include
#include
using namespace std;
void ThreadMain() {//线程入口
	//获取该线程id
	cout << "begin sub thread main" << this_thread::get_id() << endl;
	//假定十秒钟之后线程退出
	for (int i = 0; i < 10; i++) {
		cout << "in thread" << i << endl;
		this_thread::sleep_for(chrono::seconds(1));
	}
	cout << "end sub thread main" << endl;
}
int main()
{
	cout << "main thread id " << this_thread::get_id() << endl;
	//线程的创建和启动
	thread th(ThreadMain);//函数指针 主线程调用子线程
	cout << "wait sub thread" << endl;//这行代码在多核处理下会和TreadMain()第一个cout同时执行 需要用锁来解决
	th.join();//阻塞 等待子线程退出
	cout << "end wait sub thread" << endl;
	cout << "end main thread" << endl;
	return 0;
}

输出结果
C++多线程--为什么要使用多线程、线程的简单使用_第1张图片

你可能感兴趣的:(笔记,理解交流,c++,开发语言,后端)