1

C での pthreads とマルチスレッド プログラミングの感触をつかもうとしています。このサイトのおかげで、コンパイル時にエラーが発生しないようにライブラリをリンクすることができました。

1000000 x を出力するスレッドと 1000000 o を出力するスレッドの 2 つのスレッドを実行しようとしています。

ただし、プログラムの実行時に問題があります。コマンド ラインが 1 ミリ秒間ポップアップしてから終了します。何も起こらないようです。コンパイルエラーや、修正できるものさえありません。スレッドの作成とスレッドの結合ステートメントをコメント アウトすると、コマンド ラインがポップアップし、システム ("PAUSE") のためにキーがヒットされるのを待ちます。

ここに私のコードがあります:

#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);
      }
}

Bloodshed Dev-C++ IDE から DOS C アプリケーションを実行しています。pthread .dll および .a ファイルの私のバージョンは、libpthreadGC2.a および pthreadGC2.dll です。

他の仕様が必要な場合は、lemmie know

前もって感謝します!

4

1 に答える 1

2

printf を見てください: フォーマット '%c' はタイプ 'int' を想定していますが、引数 2 のタイプは 'char *' です。したがって、それは printf("%s",str); である必要があります。

于 2011-05-20T20:32:50.173 に答える