c語(yǔ)言多線程并發(fā)例子 c語(yǔ)言有沒(méi)有多線程這個(gè)概念?
c語(yǔ)言有沒(méi)有多線程這個(gè)概念?線程:線程是程序中的執(zhí)行流。每個(gè)線程都有自己的特殊寄存器(堆棧指針、程序計(jì)數(shù)器等),但代碼區(qū)域是共享的,即不同的線程可以執(zhí)行相同的函數(shù)。多線程:多線程是指一個(gè)程序包含多個(gè)執(zhí)
c語(yǔ)言有沒(méi)有多線程這個(gè)概念?
線程:線程是程序中的執(zhí)行流。每個(gè)線程都有自己的特殊寄存器(堆棧指針、程序計(jì)數(shù)器等),但代碼區(qū)域是共享的,即不同的線程可以執(zhí)行相同的函數(shù)。
多線程:多線程是指一個(gè)程序包含多個(gè)執(zhí)行流,即一個(gè)程序可以運(yùn)行多個(gè)不同的線程來(lái)同時(shí)執(zhí)行不同的任務(wù),也就是說(shuō),一個(gè)程序可以創(chuàng)建多個(gè)并行執(zhí)行線程來(lái)完成自己的任務(wù)。
C語(yǔ)言設(shè)計(jì)之初,沒(méi)有設(shè)計(jì)多線程機(jī)制,因?yàn)殡S著軟硬件的發(fā)展和需求的發(fā)展。后來(lái),C語(yǔ)言開(kāi)發(fā)了線程庫(kù)來(lái)支持多線程操作和應(yīng)用。
本文主要介紹了基于Linux的C多線程技術(shù)。在編譯C多線程時(shí),一方面必須指定Linux C語(yǔ)言的多線程庫(kù)pthread才能正確編譯(例如:GCC test)。C-O test-lpthread);另一方面,線程頭文件#include必須包含
由于標(biāo)準(zhǔn)C語(yǔ)言不提供操作系統(tǒng)的內(nèi)容,如果要為系統(tǒng)開(kāi)發(fā)應(yīng)用程序,需要使用系統(tǒng)提供的API。比如微軟的系統(tǒng)是MFC,使用起來(lái)很麻煩,不能跨平臺(tái)。但是,Java在虛擬機(jī)中運(yùn)行。只要使用虛擬機(jī)提供的類庫(kù)來(lái)完成應(yīng)用程序,就不需要再學(xué)習(xí)系統(tǒng)API,只要操作系統(tǒng)支持Java虛擬機(jī),跨平臺(tái)非常方便。還有封裝效率的問(wèn)題。Java提供的類庫(kù)相對(duì)簡(jiǎn)單,使用方便。這與C的MFC有關(guān),也與開(kāi)發(fā)環(huán)境有關(guān)。用VC6.0開(kāi)發(fā)Windows應(yīng)用程序是用C語(yǔ)言編寫(xiě)的,我不認(rèn)為它在Java環(huán)境中是所見(jiàn)即所得。研究Java的組織結(jié)構(gòu)對(duì)您來(lái)說(shuō)是很費(fèi)時(shí)的。但是Java環(huán)境要簡(jiǎn)單得多。最后,C語(yǔ)言不支持面向?qū)ο蟮腏ava,但我認(rèn)為這不是重點(diǎn),因?yàn)槿绻皇褂肑ava提供類,就不需要從頭開(kāi)始構(gòu)建Java