我正在解决大学问题。父进程通过管道向子进程提供一个文件中读取的数字( nThreads )。儿子必须执行 nThreads 线程并为 nThreads 秒休眠,并且每个线程必须打印由子进程给出的随机数并且休眠该随机数秒。 这些过程打印好了,但线程不是。什么在我的代码中没有用?
scope
请原谅我,如果我做错了什么,这是我第一次在这里问一些事情。
答案 0 :(得分:0)
有很多错误:
首先,您将指针传递给int random
但在线程中将参数(指针)转换为数字。要么必须将int random
转换为指针,要么将线程转换args
转换为long *
,并从该指针读取内存。一旦你启动多个线程,后者将实际停止工作,因为你将在此期间更改变量内容,甚至留下该变量的范围。
其次,你不要等待线程。使用pthread_join
等待线程。
第三,你只运行单个线程,你需要从0
到nThreads
循环创建,一旦启动所有这些线程,请在类似的循环中调用pthread_join
。
第四,大多数平台上int
的大小为4,而您只发送2个字节。这可能适用于低端平台,但在big endian上会失败。对sizeof(int)
和write
使用read
可使其更具便携性。