C 多執行緒系列(一)

2022-04-03 04:23:10 字數 1189 閱讀 4805

1、執行緒概念

程序(process)是一塊包含某些資源的記憶體區域,作業系統利用程序把它的工作劃分為功能單元。而執行緒是程序的乙個實體,是cpu排程和分派的基本單元,是比程序更小的能獨立執行的基本單元。執行緒自己並不擁有系統資源,只是擁有在執行中必不可少的極少資源(如程式計算器,一組暫存器和棧等),但是它與同屬乙個程序的其他執行緒共享程序所擁有的全部資源。

應用程式中,乙個程式至少有乙個程序,乙個程序至少有乙個執行緒.

2、多執行緒的優點

(1)提高cpu利用率

(2)提高程式響應速度。多執行緒可將應用程式相關功能劃分為多個單獨的任務併發處理,不影響主線程執行,提高程式響應速度。

(3)相對程序開銷小,易於進行排程。

(4)可調節多執行緒任務優先順序,便於提高程式的效能。

3、多執行緒的缺點

(1) 等待使用共享資源(主要是獨占性資源,如印表機)時會造成程式執行速度變慢。

(2) 多執行緒的管理需要額外的cpu開銷。

(3) 多執行緒的死鎖,長時間的等待資源以及資源競爭容易造成執行緒死鎖。

(4) 對公有變數的同時讀或寫,容易造成多執行緒不同的資料處理產生共有變數資料錯誤。

(5) 執行緒的異常中斷,容易產生一些我們無法預知的錯誤。

4、多執行緒簡單例項

引用執行緒所在類:using system.threading;

定義執行緒:thread mythread;

執行緒新增函式:mythread=new thread(new threadstart(mymethod));期中threadstart引數為無返回型別,無引數的函式。

執行緒啟動:mythread.start();執行mymethod函式體。

終止執行緒:mythread.abort();

5、多執行緒呼叫帶參函式

初始化帶參執行緒:mythread=new thread(mymethod);此時mymethod為帶object型別引數的函式。

區別在於執行緒啟動是傳入object型別引數:mythread.abort(parms);parms為object型別引數,啟動後自動將parms帶入執行函式中。

C 多執行緒系列

個人感覺c 的程式設計,除了對演算法和類庫的使用以外,達到一定的水平以後,多執行緒的使用將會成為乙個很大的瓶頸。所以重新花費時間讀了一本書 net 4.0物件導向程式設計漫談 應用篇 裡面關於多執行緒的描述。自己做了乙個讀書筆記,把多執行緒部分的要點進行了梳理,並且適當的加上了一些自己的測試和理解。...

C 多執行緒程式設計系列(一) 簡介

原文 c 多執行緒程式設計系列 一 簡介 目錄目前只整理到第二章,執行緒同步,筆者後面會慢慢更新,爭取能把這本書中精華的知識都分享出來。c 多執行緒程式設計系列 一 簡介 c 多執行緒程式設計系列 二 執行緒基礎 c 多執行緒程式設計系列 三 執行緒同步 c 多執行緒程式設計系列 四 使用執行緒池 ...

C 多執行緒學習系列

我的c 多執行緒學習系列 c 多執行緒學習 一 多執行緒的相關概念 c 多執行緒學習 二 如何操縱乙個執行緒 c 多執行緒學習 三 生產者和消費者 c 多執行緒學習 四 多執行緒的自動管理 執行緒池 c 多執行緒學習 五 多執行緒的自動管理 定時器 c 多執行緒學習 六 互斥物件 推薦閱讀 c 執行...