當前位置:首頁 » 編程軟體 » 多線程序編譯教程

多線程序編譯教程

發布時間: 2022-06-28 21:47:39

Ⅰ 用gcc怎麼編譯多線程程序 最好寫出命令來

果已經寫好了源文件,那麼cd進所在的目錄gccfilename.c-ofilename./filename

Ⅱ 打開多線編輯器最快捷的方法是

最簡單的就是直接雙擊多線,就會彈出多線編輯窗口,或者通過命令"mledit"和菜單"修改--對象--多線"即可。編輯器,一般是指用來修改電腦檔案的編寫軟體,但也有人稱 PE2、HE4(漢書)等文書軟體為編輯器。常見的編輯器有文本編輯器、網頁編輯器、源程序編輯器、圖像編輯器,聲音編輯器,視頻編輯器等。
編譯器通常接受由任何生成標准文件(例如ASCII文件)的編輯器編寫的源程序。編譯器已與另一個編輯器和其他程序捆綁進一個交互的開發環境——IDE中。此時,盡管編輯器仍然生成標准文件,但會轉向正被討論的程序設計語言的格式或結構。這樣的編輯器稱為基於結構的,且它早已包括了編譯器的某些操作;因此,程序員就會在程序的編寫時而不是在編譯時就得知錯誤了。從編輯器中也可調用編譯器以及與它共用的程序,這樣程序員無需離開編輯器就可執行程序。

Ⅲ C++多線程編程要用到哪些庫如何編譯這些庫

千萬別以為現在的C++沒有原生的多線程庫

OpenMP 是一個多線程庫,不過他還需要編譯器的支持,好在現在絕大多數都已經支持(這個可能是目前最流行的原生多線程庫了)

C++的標准頭process.h(太老的沒有,2002年後的基本都有)中有操作進程和執行環境的函數,能實現簡單的進程級或線程級並行操作。
使用起來非常非常方便。windows平台的c語言編譯工具也都有這個頭,unix平台上的unistd.h跟這個頭很相似,函數名與用法也基本一樣。

還有一些其他的第三方多線程庫,你可以網上搜搜,但是注意是否跨平台等問題

如果你要使用操作系統相關的多線程API,那麼也就沒什麼選擇餘地,windows上只能用windows的多線程API (參考MSDN) unix同理

OpenMP的優點是跨平台,功能豐富強大(例如提供了各種鎖、信號等),代碼改動也比較小,使用起來也非常方便快捷。缺點是沒有像直接用系統API時透明感,畢竟使用系統API時,程序員完全控制了邏輯,非常直觀,當然這也帶來了錯誤風險和代碼復雜度

Ⅳ 什麼是多線程編程

多線程編程技術是java語言的重要特點。多線程編程的含義是將程序任務分成幾個並行的子任務。特別是在網路編程中,你會發現很多功能是可以並發執行的。 比如網路傳輸速度較慢、用戶輸入速度較慢,你可以用兩個獨立的線程去完成這兩個功能,而不影響正常的顯示或其它功能。 多線程是與單線程比較而言的,普通的Windows採用單線程程序結構,其工作原理是:主程序有一個消息循環,不斷從消息隊列中讀入消息來決定下一步所要乾的事情,一般是針對一個函數,只有等這個函數執行完之後,主程序才能接收另外的消息來執行。比如子函數功能是在讀一個網路數據,或讀一個文件,只有等讀完這個數據或文件才能接收下一個消息。在執行這個子函數過程中你什麼也不能幹。但往往讀網路數據和等待用戶輸入有很多時間處於等待狀態,多線程利用這個特點將任務分成多個並發任務後,就可以解決這個問題。Java中的線程類 1.擴展java.lang.Thread類,用它覆蓋Thread類的run方法。 2.生成實現java.lang.Runnable介面的類並將其它的實例與java.lang.Thread實例相關聯。 Thread類是負責向其它類提供線程支持的最主要的類,要使用一個類具有線程功能,在Java中只要簡單地從Thread類派生一個子類就可以了擴展Thread類,如printThread.java。 Thread類最重要的方法是run方法。run方法是新線程執行的方法,因此生成java.lang.Thread的子類時,必須有相應的run方法。 //PrintThread.java public class PrintThread extends Thread//繼承Tread類 private int count=0 //定義一個count變數用於統計列印的次數並共享變數 public static void mainString args//main方法開始 PrintThread p=new PrintThread//創建一個線程實例 p.start//執行線程 for{;;}//主線程main方法執行一個循環,for執行一個死循環count++ System.out.printcount+″:Main\n″//主線程中列印count +「main」變數的值,並換行 public void run//線程類必須有的run()方法for{;;}count++ System.out.printcount+″:Thread\n″ 上面這段程序便是繼承java.lang.Tread並覆蓋run的方法。用Java 虛擬機啟動程序時,這個程序會先生成一個線程並調用程序主類的main方法。這個程序中的main方法生成新線程,連接列印「Thread」。在啟動線程之後,主線程繼續列印「Main」。 編譯並執行這個程序,然後立即按「Ctrl+C」鍵中斷程序,你會看到上面所述的兩個線程不斷列印出:XXX:main…..XXX:Thread…. XXX代表的是數字,也就是上面count的值。在筆者的機器上,不同時刻這兩個線程列印的次數不一樣,先列印20個main(也就是先執行20次主線程)再列印出50次Thread,然後再列印main…… 提示:為了便於查看該程序的執行結果,你可以將執行結果導入一個文本文件,然後打開這個文件查看各線程執行的情況。如運行: javac PrintThread.java Java PrintThread1.txt 第一個命令javac PrintThread.java是編譯java程序,第二個是執行該程序並將結果導入1.txt文件。當然你可以直接執行命令:java

Ⅳ c語言如何編寫一個簡單的多線程程序

這是一個多線程例子,裡面只有兩個線程,是生產者/消費者模式,已編譯通過,注釋很詳細,
如下:

/* 以生產者和消費者模型問題來闡述linux線程的控制和通信你
生產者線程將生產的產品送入緩沖區,消費者線程則從中取出產品。
緩沖區有N個,是一個環形的緩沖池。
*/
#include <stdio.h>
#include <pthread.h>

#define BUFFER_SIZE 16

struct prodcons
{
int buffer[BUFFER_SIZE];/*實際存放數據的數組*/
pthread_mutex_t lock;/*互斥體lock,用於對緩沖區的互斥操作*/
int readpos,writepos; /*讀寫指針*/
pthread_cond_t notempty;/*緩沖區非空的條件變數*/
pthread_cond_t notfull;/*緩沖區未滿 的條件變數*/
};

/*初始化緩沖區*/
void pthread_init( struct prodcons *p)
{
pthread_mutex_init(&p->lock,NULL);
pthread_cond_init(&p->notempty,NULL);
pthread_cond_init(&p->notfull,NULL);
p->readpos = 0;
p->writepos = 0;
}

/*將產品放入緩沖區,這里是存入一個整數*/
void put(struct prodcons *p,int data)
{
pthread_mutex_lock(&p->lock);
/*等待緩沖區未滿*/
if((p->writepos +1)%BUFFER_SIZE ==p->readpos)
{
pthread_cond_wait(&p->notfull,&p->lock);
}
p->buffer[p->writepos] =data;
p->writepos++;
if(p->writepos >= BUFFER_SIZE)
p->writepos = 0;
pthread_cond_signal(&p->notempty);
pthread_mutex_unlock(&p->lock);
}
/*從緩沖區取出整數*/
int get(struct prodcons *p)
{
int data;
pthread_mutex_lock(&p->lock);
/*等待緩沖區非空*/
if(p->writepos == p->readpos)
{
pthread_cond_wait(&p->notempty ,&p->lock);//非空就設置條件變數notempty
}
/*讀書據,移動讀指針*/
data = p->buffer[p->readpos];
p->readpos++;
if(p->readpos == BUFFER_SIZE)
p->readpos = 0;
/*設置緩沖區未滿的條件變數*/
pthread_cond_signal(&p->notfull);
pthread_mutex_unlock(&p->lock);
return data;
}
/*測試:生產站線程將1 到1000的整數送入緩沖區,消費者線程從緩沖區中獲取整數,兩者都列印信息*/
#define OVER (-1)
struct prodcons buffer;
void *procer(void *data)
{
int n;
for( n=0;n<1000;n++)
{
printf("%d ------>\n",n);
put(&buffer,n);
}
put(&buffer,OVER);
return NULL;
}
void *consumer(void *data)
{
int d;
while(1)
{
d = get(&buffer);
if(d == OVER)
break;
else
printf("----->%d\n",d);
}
return NULL;
}
int main()
{
pthread_t th_p,th_c;
void *retval;
pthread_init(&buffer);
pthread_create(&th_p,NULL,procer,0);
pthread_create(&th_c,NULL,consumer,0);
/*等待兩個線程結束*/
pthread_join(th_p, &retval);
pthread_join(th_c,&retval);
return 0;
}

Ⅵ 陳碩 linux 多線程伺服器編程 上的例子怎樣編譯

Linux多線程程序編譯時記得加上一個-pthread的編譯參數就可以了,不加這個參數就通不過。

Ⅶ Linux下mpi多線程編程的編譯問題

看設置了,我的反正可以運行。\r\n不過 X 裡面運行字元界面的程序有個問題就是 X 一般不會顯示終端窗口,所以除非你的程序是窗口程序,不然什麼顯示都沒有就運行完成退出了。 \r\n--------------\r\n有的 linux 有一個\\「在終端中運行」的項目,...

Ⅷ C++如何實現多文件程序的編譯和運行

vc++6.0實現多文件程序:
1、必須創建工程,並將文件加入同一工程下;2、必須有自定義頭文件(.h)將多個源文件(.c/.cpp)關聯起來,並將函數定義放在頭文件中。
多個源文件需要在這個窗口創建:
創建完畢後如圖:

Ⅸ 如何用gcc在linux下編譯多線程c語言程序

如果已經寫好了源文件,那麼cd進所在的目錄gccfilename.c-ofilename./filename

Ⅹ 多文件C程序怎麼編譯連接及運行

關於 C 語言源程序的多模塊編譯、連接,這個必須要靠編寫 makefile 文件才行。
而且還必須依照編寫 makefile 的規則編寫,才能夠正確編譯、連接各個 C 語言
源程序,最終執行 make makefile 指令,生成一個可執行程序。
makefile 文件是一個文本文件,其大致內容如下:
myfile1.o: myfile1.c
gcc -c myfile1.c
myfile2.o: myfile2.c
gcc -c myfile2.c
myrunfile: myfile1.o myfile2.o
gcc -o myrunfile myfile1.o myfile2.o

熱點內容
sqlserver無法啟動 發布:2024-05-04 01:37:19 瀏覽:848
php使用正則 發布:2024-05-04 01:36:12 瀏覽:119
玉石密度演算法 發布:2024-05-04 01:24:49 瀏覽:334
我的世界雲伺服器怎麼樣 發布:2024-05-04 01:20:01 瀏覽:22
androidsdk包含 發布:2024-05-04 00:45:54 瀏覽:209
android拷貝文件 發布:2024-05-04 00:38:28 瀏覽:777
存儲冗餘比 發布:2024-05-04 00:12:58 瀏覽:405
oracle資料庫存儲原理 發布:2024-05-04 00:10:40 瀏覽:524
未拆封玩客雲3怎麼搭建伺服器 發布:2024-05-04 00:06:11 瀏覽:798
徹底刪除編譯安裝的文件 發布:2024-05-04 00:05:33 瀏覽:56