在我的项目中,我想创建一个线程,它什么都不做,只是将一些字符串附加到文本文件以测试它是否有效。我在 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”。这在其他项目中经过测试并且有效。