C語言並行程式程式設計(一)

2021-09-12 07:37:09 字數 1358 閱讀 9851

#include #include #include void hello(void);

int main(int argc,char* ar**)

void hello(void)

接著執行一下,先看一下結果

在原始檔的資料夾下開啟終端輸入:gcc -g -wall -fopenmp -o test test.c

得到乙個檔名為test的檔案,接著輸入:./test 4,得到執行結果

下面我先來解釋一下編譯命令的作用:

-g:允許使用偵錯程式 ;-wall:顯示警告;-fopenmp:防止老版本的gcc不包含openmp的支援;

-o :便以後的可執行檔案的檔名為outfile;./:用來給出可執行檔案的路徑;4代表開啟的執行緒數。

接著我來解釋一下源**,可能會牽扯到一些術語,我會在後面的文章中作更詳細的解釋,在這裡就不作過多的贅述了。

strtol函式:獲取執行緒數,包含在中。其原型為:

long strtol(const char* number p  /* in */,

char** end p /* out */,

int base /* in */

);

引數一是乙個字串,在這個例子中為命令列引數;引數二因為沒有用到,所以傳遞了乙個空指標;引數三是字串所代表的數的基數,**中的10代表十進位制

在c/c++中,預處理指令以#pragma,在openmp中,常常以#pragma omp開始

parallel指令用來表明之後的結構化**塊(基本塊)應該被多個執行緒並行執行。

將num_threads子句加入到parallel指令中,就允許程式設計師指定執行後**塊的執行緒數。

在hello函式中,我們分別獲取了執行緒的編號和執行緒數,它們的原型如下:

int my_rank = omp_get_thread_num(void);         //獲取執行緒編號

int thread_count = omp_get_num_threads(void); //獲取執行緒數

go語言 並行程式 wordcount

go在設計的時候,就有針對並行的語法 channel 和goroutine 前者 可以很方便的進行訊息和資料傳遞,在取資料和拿資料的時候可以不用關心底層實現,用 進行賦值 這裡必須加time.sleep 不然程式很快就結束,read 和 write 甚至都來不及執行。這裡和linux 執行緒程式設計...

併發程式與並行程式

併發程式是指可以被同時發起執行的程式 並行程式被設計成可以在並行的硬體上執行的併發程式。併發程式代表了所有可以實現並發行為的程式,它是乙個寬泛的概念,其中包含了並行程式。inter process communication 程序間通訊 go支援的ipc方法有管道 訊號和socket.程序 我們把乙...

Java並行程式基礎

程序是計算機中的程式關於某資料集合上的一次運動活動,是系統進行資源分配的基礎單位。程序是執行緒的容器。程式是指令 資料及其組織形式的描述,程序是程式的實體。執行緒的所有狀態都在thread的state列舉中 public enum state t1.start 也可以使用runnable介面來實現相...