並發和並行 進程和線程的概念


並發和並行

 ---並發指一個CPU可以異步的處理多個進程

 ---並行則是一個CPU同時處理多個進程

對於多核心CPU我們可以把系統看做是運行在准並行環境中的進程集合。在進程(程序)間快速反復切換叫做多任務處理。


進程和線程

進程是一個程序的實例。每個進程都有自己的虛擬地址空間和控制線程,線程是操作系統調度器(Schduler)分配處理器時間的基礎單元。


創建進程的方法:

--1.系統初始化

--2.正在運行的進程執行進程的系統調用

--3.用戶要求創建新進程

--4.啟動批處理作業


 
//WINDOWS平台下創建進程的實例 (屬上面的第2種情況)
#include <iostream>
#include <Windows.h>

int main()
{
	STARTUPINFO startupinfo = { 0 };
	PROCESS_INFORMATION processInfoMation = { 0 };
	BOOL bSuccess = CreateProcess(TEXT("C:\\Windows\\notepad.exe"), nullptr,
		nullptr, nullptr, false, NULL, nullptr, nullptr,
		&startupinfo, &processInfoMation
	);
	if (bSuccess) {
		std::cout << "Process started." << std::endl
			<< "Process ID:\t"
			<< processInfoMation.dwProcessId << std::endl;
	}
	else {
		std::cout << "Cannot start Process." << std::endl;
		std::cout << "Process ERROR ID:\t" 
			<< processInfoMation.dwProcessId << std::endl;
	}
    return 0;
}


//利用c++11中thread庫創建一個簡單的線程測試
#include <iostream>
#include <thread>
using namespace std;

void My_Function() {
	for (int _i = 0; _i < 10; _i++) {
		cout << "From : function() --" << _i << endl;
	}
}


 
int main()
{

	thread t = thread (My_Function);
	t.detach();
	for (int _i = 0; _i < 10; _i++)
		cout << "From : main() --" << _i << endl;

	return 0;
}


對於現代CPU我們可以吧系統看做是運行在准並行環境中的進程集合。在進程(程序)間快速反復切換叫做多任務處理。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com