導航:首頁 > 源碼編譯 > gcc多線程編譯有沒有問題

gcc多線程編譯有沒有問題

發布時間:2022-07-08 01:42:48

⑴ 關於c++中多線程的問題

必須要工程設置是多線程的。輸出都混在一起看不清,把它們寫入文件就容易看了,那個this指針直接傳就行,沒有必要多轉一次:

class A
{
public:
int i;
HANDLE jb;
A(int j)
{
i=j;
jb=CreateThread(NULL,0,lang,LPVOID(this),0,NULL);
}
static DWORD WINAPI lang(LPVOID p){
((A*)p)->move();
return 0;
}
void move()
{
char buf[100];
sprintf( buf, "%d.txt", i );
std::ofstream fout( buf );
int j=0;
while(1){
fout<<"this "<<i<<" :"<<j++<<endl;
}
}
};

⑵ 求助 線程問題 gcc編譯通過 g++編譯失敗

C++禁止將void指針隨意賦值給其他指針。
因此你在把void thread(void)函數的入口轉換為void*,然後當作參數調用pthread_create時就出現錯誤,因為pthread_create的參數里應該是指向形如void* fun(void*)函數的一個指針。

可以修改void thread(void)為void* thread(void*),然後去掉調用時的(void*)強制轉換,錯誤消除。

⑶ 現在用gcc編譯出來的程序能在多個核的cpu上一起跑嗎還是只能在一個核上跑

gcc編譯出來的程序能在多個核的cpu上一起跑,也可以在一個核心上執行——至少MinGW開發的多線程程序在Win2003的確如此。
國外很早就有人研究多核心進程調度問題,國內研究的人似乎不普遍。

⑷ gcc糾錯,一個有錯誤的多線程求孿生素數的c程序,20小時之內解決追加懸賞分

~~ 能不能把你的問題再說清楚一點? 我跑你的程序 我看到輸出了。我看你程序就只有一個printf()函數~~

unsigned int size = ((totbits / 32)) + 1;

bitArray = malloc((sizeof(unsigned int)) * size);

這兩條語句是不是應該寫在 while()循環的後面?否則你的數大於1000就會出現段錯誤了

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

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

⑹ c++11多線程 寫了#include<thread> 但是編譯卻報錯沒加

#include <string.h>
本身不應發生錯誤,因為它只是嵌入一個string.h文件。C的寫法,C++可用。
有的編譯器是 <strings.h>
如果編譯時告訴你缺了什麼東西,補入就可以了。
using namespace std; 是 #include <stdio.h> #include <stdlib.h> 等 std* (標准) 頭文件。
#include <string> C++ 的寫法

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

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

⑻ gcc編譯線程程序,為什麼要加-lpthread,頭文件已經包含了<pthread.h>了啊

-lpthread是鏈接庫,

<pthread.h>只有申明,實現部分都在庫裡面。

創建線程時一般是把函數的指針做參數,所以要加一個取地址符號。

ret=pthread_create(&id,NULL,(void *)&thread,NULL);

另外,建議要檢查一下創建線程的返回值ret是否成功,防止影響後面的代碼。

(8)gcc多線程編譯有沒有問題擴展閱讀:

每個語言編譯器都是獨立程序,此程序可處理輸入的原始碼,並輸出組合語言碼。全部的語言編譯器都擁有共通的中介架構:一個前端解析符合此語言的原始碼,並產生一抽象語法樹,以及一翻譯此語法樹成為GCC的暫存器轉換語言〈RTL〉的後端。

編譯器最佳化與靜態程序碼解析技術(例如FORTIFY_SOURCE,一個試圖發現緩沖區溢位〈buffer overflow〉的編譯器)在此階段應用於程序碼上。最後,適用於此硬體架構的組合語言程序碼以Jack Davidson與Chris Fraser發明的演算法產出。

⑼ linux裡面線程編譯運行問題

#gcc a.c -o a #此句的-o a說明輸出目標文件為「a」;
#gcc -Wall-lpthread threadcreatetest.c #此句未註明輸出目標文件名,系統默認輸出為a.out,所以編譯之後執行./a.out文件。
如果上句也沒有指明「 -o a 」的話,輸出也是a.out,你可以試試

⑽ LINUX下多線程編譯問題

你編譯的時候有加多線程連接選項嗎? 要加上 -lpthread 或者 -pthread (盡量選後者)
例如 gcc -pthread -o test main.cpp

另外你的線程創建的不對,函數指針不能強轉類型(這里也不用轉)
pthread_create(&procter_t,NULL,(void*)procter_f,NULL);
pthread_create(&consumer_t,NULL,(void*)consumer_f,NULL);

應該是
pthread_create(&procter_t,NULL,procter_f,NULL);
pthread_create(&consumer_t,NULL,consumer_f,NULL);

閱讀全文

與gcc多線程編譯有沒有問題相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:579
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143
新預演算法責任 瀏覽:444
伺服器如何處理5萬人同時在線 瀏覽:251
哈夫曼編碼數據壓縮 瀏覽:426
鎖定伺服器是什麼意思 瀏覽:385
場景檢測演算法 瀏覽:617
解壓手機軟體觸屏 瀏覽:350