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

線程編譯

發布時間: 2022-01-08 09:58:07

linux下c、c++下多線程編譯

C語言要求除main函數外 所有的函數必須先聲明才能使用 你可以在函數定義的時候一起聲明這個函數 但是在這個函數定義之前不能使用這個函數
下面用通俗點的語言講: 你在main函數中調用了thread函數, 但是如果你把void *thread(void *vargp);刪掉了, 那麼編譯器就找不到這個函數了(因為編譯器是從前往後編譯這個程序的) 因此編譯器是通不過的
有兩種方法, 一種就是像你之前寫的 先聲明這個函數 第二種是把void *thread(void *vargp){...}放到main函數的前面.
有些返回值和參數類型為int型的函數也可以不用聲明, 編譯器也能通過, 不過這是不建議的 也是不符合標準的
標准建議每個函數都應該給出它們的顯式的聲明
希望你懂了 嘿嘿

java多線程編譯不通過

JDK 1.6.0編譯通過,盡管這個文件名字和類名不匹配。
JDK 1.6.0運行成功,
java -classpath . TreadDemo

通常java線程是用一個類實現Runnable介面,然後再創建一個線程對象讓工作跑起來。
這種做法在多個並發工作彼此之間有競爭和同步的需要的時候,就顯現出優勢了。

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

-lpthread是鏈接庫,

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

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

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

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

(3)線程編譯擴展閱讀:

每個語言編譯器都是獨立程序,此程序可處理輸入的原始碼,並輸出組合語言碼。全部的語言編譯器都擁有共通的中介架構:一個前端解析符合此語言的原始碼,並產生一抽象語法樹,以及一翻譯此語法樹成為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,你可以試試

㈤ make 多線程編譯會出錯么

程序沒有問題,看看MAKEFILE30行是不是有什麼錯誤,或者換個工程配置,這個應該和工程的配置有關,程序這么簡單,一點問題沒有。

㈥ 為什麼有時編譯選項要改成多線程才能編譯通過,而 單線程就不行呢

主要是libc(C函數)庫不同,有時鏈接時會看到libcd.lib/libc.lib/libcmt.lib...這些東東,就是針對不同的線程環境所使用的。不過在VS2005之後,不再使用單線程庫了,它只使用libc*mt.lib,也就是有很多老程序代碼在VS2005下找不到LIBCD.lib的原因。
如果你在程序中使用了_beginthread之類的函數,那麼就會鏈接到多線程的c函數庫,單線程選項當然不能使用了。
而使用FORCE:MUTIPLE和這個沒有多大關系,它可能在同時使用了單線程庫和多線程庫時起到了忽略多個重疊符號錯誤的作用。

㈦ 線程編譯linux,怎麼錯了~謝了

這一句:
ret=pthread_create(&id2,NULL,(void*)myThread2.NULL);
逗號寫成了點號,改為:
ret=pthread_create(&id2,NULL,(void*)myThread2, NULL);
編譯時加鏈接線程庫:
CC xx.c -o xx -lpthread

㈧ 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);

㈨ QT如何進行線程編譯

在Qt中使用多線程,目前就我使用過的有兩種,一是子類化QThread,重寫run函數,在run函數里實現自己的代碼,這一部分代碼通常是比較耗時,或者乾脆直接阻塞的。比如一個while循環,設置一個標志,判斷循環結束。
這樣的例子在網上有很多,就不寫了。
這樣寫的話,會有一些東西需要了解。
子類化QThread的方法,只有run函數裡面的內容是執行在子線程里的,其他的部分,比如槽函數什麼的還是在主線程里執行(假設是在主線程開啟的該子線程)。
還有一種方法,是子類化QObject,新建一個線程,然後使用MoveToThread把這個類的對象移到新建的線程中,這種做法使得它所有的槽函數都是執行在新開辟的線程裡面。
如果直接(QObject對象).abc()的話,這個成員函數是在主進程內執行,可能會出現"QObject::killTimer: timers
cannot be stopped from another thread"的運行錯誤。
使用第二種方法的話,貌似會遇到這樣的問題:如果在一個槽函數中把子線程阻塞,其他的槽函數無法接受來自主線程

㈩ linux下線程pthread編譯時為什麼要加lpthread

shibixiao | 六級
lpthread是表示要連接到pthread的庫是這里省略的lib,你應該可以找到共享庫libpthread.so的

因為pthread編程用到的函數在pthread庫裡面,就像你使用pow等數學計算函數,需要用到math.h

需要 -lm

熱點內容
安卓上哪裡下大型游戲 發布:2024-12-23 15:10:58 瀏覽:189
明日之後目前適用於什麼配置 發布:2024-12-23 14:56:09 瀏覽:56
php全形半形 發布:2024-12-23 14:55:17 瀏覽:829
手機上傳助手 發布:2024-12-23 14:55:14 瀏覽:733
什麼樣的主機配置吃雞開全效 發布:2024-12-23 14:55:13 瀏覽:830
安卓我的世界114版本有什麼 發布:2024-12-23 14:42:17 瀏覽:711
vbox源碼 發布:2024-12-23 14:41:32 瀏覽:279
詩經是怎麼存儲 發布:2024-12-23 14:41:29 瀏覽:661
屏蔽視頻廣告腳本 發布:2024-12-23 14:41:24 瀏覽:420
php解析pdf 發布:2024-12-23 14:40:01 瀏覽:819