我有一组格式为
的文件系统I / O调用processid system-call
例如
1 open(A)
1 read(A)
2 open(B)
1 open(C)
2 write(B)
.....
即交错序列。我现在需要以大致相同的顺序重放这些跟踪,并且每个进程由不同的线程执行。在我编写的程序中,主线程读取跟踪文件,并通过将系统调用放入相关线程的任务队列中,将任务分配给与进程相对应的线程。任务线程从其队列中读取调用并进行必要的调用。
但是我没有实现I / O跟踪文件中的交错。请建议我一个方法...
谢谢
编辑:一种方法是在调用每个跟踪后延迟主线程读取文件,从而允许任务线程继续。这使线程的目的无用,但它似乎符合我的目的
答案 0 :(得分:0)
让调度程序在告诉线程要做什么之后进入休眠状态,直到线程完成时线程唤醒它为止。你不会同时执行;你将被不同的线程命令执行。这就是你所要求的,但它可能不是你想要的。你可能想要的是写入文件的依赖图,让每个线程等到它的依赖完成。有些语言(比如prologue和haskell)会为你做这个。