我想模拟一个视频过程,但我对它没有太多线索,因为过程模拟的代码是使用fork()(POSIX)完成的,但现在我要在Windows中完成它。是否可以使用createProcess()?我实际上只需要某种指导/线索。
视频: 视频被模拟为一个尝试每秒接收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;
}
}
答案 0 :(得分:2)
在Windows中,您使用fork
模拟CreateThread
,除非后跟exec
,在这种情况下,您CreateProcess
。
fork
系统调用会创建进程的克隆。 exec
系统调用会将新程序加载到您的进程中,替换旧程序。