过程仿真
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
系统调用将新程序加载到您的进程中,替换旧程序。
我想模拟一个视频过程,但是我对它没有太多的了解,因为过程模拟的代码是使用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
系统调用将新程序加载到您的进程中,替换旧程序。