2011-05-20 32 views
1

試圖在C中感受pthreads和多線程編程。感謝這個站點,託管了Ive,以便讓庫鏈接,以便它不會再給我編譯錯誤。在Dev-C++中使用pthreads - 奇怪的錯誤

我試圖讓2個線程運行,一個打印1000000個x和一個打印1000000個o。

但是,運行該程序時存在問題。命令行彈出一毫秒然後死亡,似乎沒有任何事情發生。甚至沒有任何編譯錯誤或任何我可以修復的東西。如果我註釋掉線程創建和線程連接語句,那麼命令行會彈出並等待因爲系統(「暫停」)而擊中某個鍵。

這裏是我的代碼:

#include <stdio.h> 
#include <stdlib.h> 
#include <pthread.h> 
#include <time.h> 
#include <pthread.h> 

void* printChar(void *c); 

int main(int argc, char *argv[]) 
{ 
    pthread_t thread1; 
    pthread_t thread2; 

    pthread_create(&thread1,NULL,printChar,"x"); 
    pthread_create(&thread2,NULL,printChar,"o"); 

    pthread_join(thread1,NULL); 


    system("PAUSE"); 
    return 0; 
} 

void* printChar(void *c) 
{ 
     char *str; 
     str = (char*)c; 
     int i; 
     for(i = 0; i < 1000000; i++) 
     { 
       printf("%c",str); 
     } 
} 

,我從流血開發-C++ IDE一個DOS C-應用。我的並行線程.dll文件和版本.a文件是:libpthreadGC2.a和pthreadGC2.dll

如果您需要任何其他規格lemmie提前知道

的感謝!

+5

你爲什麼使用DevC++?這是一個無法維繫的po pile。在http://codeblocks.org/使用Code :: Blocks – 2011-05-20 17:07:57

+1

嘗試從命令行控制檯運行它以查看錯誤。 – bdonlan 2011-05-20 17:11:37

+2

不僅它沒有維護,而且包含嚴重過時的gcc(3.x)。 – 2011-05-20 17:20:11

回答

2

看看你的printf格式'%c'需要鍵入'int',但參數2的類型是'char *'。所以它應該是printf(「%s」,str);