这样做是否安全:
int fd;
void thread_main()
{
char buf[M];
ssize_t r = read(fd, buf, M);
assert(r == M);
...
}
int main()
{
fd = open("/dev/urandom", O_RDONLY);
for (int i = 0; i < N; i++)
start_thread(i);
for (int i = 0; i < N; i++)
join_thread(i);
}
那就是:从主线程open(2)
ing之后,从不同线程上下文中不同步它是否安全?"/dev/urandom"
read(2)
什么情况下assert会火?两个线程会得到相同的数据吗?会出什么问题?