【发布时间】:2010-01-04 20:00:42
【问题描述】:
所以我刚刚从this website 运行了这个例子,它说输出应该像这样交替:
threadFunc 说:处理... main() 正在运行... threadFunc 说:处理... main() 正在运行...但是在我的机器上它会产生这个:
threadFunc 说:处理... threadFunc 说:处理... main() 正在运行... main() 正在运行...是因为我有一个非多线程的单核处理器吗?
注意:编译时我也收到此警告:implicit declaration of function ‘usleep’
我正在像这样使用 gcc 进行编译:gcc new.c -o new -lpthread
【问题讨论】:
-
无法预测多线程程序(没有序列化)的输出将是什么。任何提出其他建议的网站都可能是可疑的。
-
隐式声明意味着您没有为您的函数导入函数原型。找出该函数的正确头文件是什么。如果你不使用函数的结果并且你知道你传递了正确的类型,那么你可以在没有函数原型的情况下生存,但它有潜在的危险,你最好找到正确的头文件。跨度>
-
来自
man usleep它说要添加#include <unistd.h> -
@PP:我已经包含了
#include <unistd.h>。出现此警告的任何其他原因? -
您使用的是什么操作系统?您是否在系统上输入了
man usleep?
标签: c multithreading