过程仿真

Process Emulation

我想模拟一个视频过程,但是我对它没有太多的了解,因为过程模拟的代码是使用fork()完成的(POSIX),但现在我要去做了在 Windows。可以使用 createProcess() 吗?实际上,我只需要某种 guidance/clues

视频: 视频被模拟为每秒尝试接收 cpu 60 次的线程 并使用 40% cpu。这对于 60fps 的视频播放要求相当高。喜欢 它忽略缓存、驱动程序和视频卡的音频模拟器。根据音频, 视频以实时选项为基准。

Posix中的一点示例代码:

/* We emulate video by using 40% cpu and waking for 60fps */
#define VIDEO_INTERVAL  (1000000 / 60)
#define VIDEO_RUN   (VIDEO_INTERVAL * 40 / 100)
void emulate_video(struct thread *th)
{
    unsigned long long deadline;
    sem_t *s = &th->sem.stop;
    struct timespec myts;

    th->decasecond_deadlines = 1000000 / VIDEO_INTERVAL * 10;
    deadline = get_usecs(&myts);

    while (1) {
        deadline = periodic_schedule(th, VIDEO_RUN, VIDEO_INTERVAL,
            deadline);
        if (!trywait_sem(s))
            return;
    }
}

在Windows中,你用CreateThread模拟fork,除非它后面跟着exec,在这种情况下你使用CreateProcess.

fork 系统调用创建进程的克隆。 exec 系统调用将新程序加载到您的进程中,替换旧程序。