私のプロジェクトでは、テキストファイルに文字列を追加して機能するかどうかをテストするだけのスレッドを作成したいと考えています。Ubuntu 12.04 で IDE Eclipse Juno を使用しています。私のコードの一部は次のとおりです。
pthread_t processThread;
threadData * thData = new threadData;
int t = pthread_create(&processThread, NULL,
BufferedData::processData, (void *)thData);
ここで、threadData は、スレッドのパラメーターを持つ構造体です。クラス BufferedData のスレッド開始メンバー関数なので、processData メソッドは静的です。その宣言は次のとおりです。
static void * processData(void * arg);
コードのこの部分の後、t 値 (pthread_create の戻り値) をチェックします。毎回0なので、スレッドの開始は成功したと思います。しかし、それでも何もしません - 文字列をファイルに追加しません。関数 processData が何をするかは問題ではありません: ファイルへの文字列の追加、例外のスロー、cout への書き込みなど。毎回何もしません。
私は経験豊富な C++ プログラマーではないので、問題を解決するために何を確認、編集、または実行すればよいかわかりません。IDE は、何かが間違っているという応答を返してくれません。すべてが問題ないように見えます。
回答ありがとうございます。
編集: processData 関数のコード:
void * BufferedData::processData(void * arg) {
HelperFunctions h;
h.appendToFile("log", "test");
return 0;
}
appendToFile メソッドは、文字列 "test" をファイル "log" に書き込みます。これは他のプロジェクトでテストされており、機能します。