Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Concurrency 2+的并发上下文切换;双核机器上的youtube视频_Concurrency_Context Switch - Fatal编程技术网

Concurrency 2+的并发上下文切换;双核机器上的youtube视频

Concurrency 2+的并发上下文切换;双核机器上的youtube视频,concurrency,context-switch,Concurrency,Context Switch,据我所知,如果软件线程的数量超过物理内核的数量,并发涉及到上下文切换。因此,例如,如果有4个软件线程在一个物理内核上运行,那么每个软件线程将轮流运行,同时/并行运行的软件线程不超过1个 我正试图将这个想法应用到我的MacBookPro上的youtube视频中。我有2个核心,我在一秒钟内开始了4个youtube视频(我假设基本上是4个软件线程),每个视频播放了1分钟。由于我有2个核心,我的印象是最多2个youtube视频可以同时取得进展。我的眼睛和耳朵感觉到所有4个视频都在并行进行,并且没有任何视

据我所知,如果软件线程的数量超过物理内核的数量,并发涉及到上下文切换。因此,例如,如果有4个软件线程在一个物理内核上运行,那么每个软件线程将轮流运行,同时/并行运行的软件线程不超过1个

我正试图将这个想法应用到我的MacBookPro上的youtube视频中。我有2个核心,我在一秒钟内开始了4个youtube视频(我假设基本上是4个软件线程),每个视频播放了1分钟。由于我有2个核心,我的印象是最多2个youtube视频可以同时取得进展。我的眼睛和耳朵感觉到所有4个视频都在并行进行,并且没有任何视频被暂停,但我认为这是因为上下文切换的频率是我感觉不到的

因此,我设置了一个计时器,当我在大约相同的时间(彼此相隔1秒)启动所有4个视频时,看看这4个视频达到1分钟标记需要多长时间。这4个视频总共大约需要1分钟才能达到1分钟标记。我很困惑,为什么我只有2个核心却不需要至少2分钟,所以最多可以同时播放2个视频(假设我的电脑除了播放youtube视频之外什么都不做,这是最好的情况)


看来我对并发/上下文切换有些误解,因为我不明白这4个视频怎么能在一分钟内达到1分钟。有人能解释一下吗

您无法使用视频播放来测量这一点。视频播放涉及帧定时延迟,其他进程(视频)可以正常播放。用不涉及计时的任务来衡量它,例如视频编码。@BurakSerdar您能更详细地解释一下“帧计时延迟”在并发上下文中的含义吗?我不明白。这意味着如果你以60帧/秒的速度播放视频,一旦你在屏幕上绘制了一帧,你必须等待绘制下一帧,所以这两帧之间的时差是1/60秒。@Burak Serdar Ohh我明白了。你是说在画面之间,其他视频可能正在播放。如果帧速率与处理器的频率相等,这是否意味着这4个视频至少需要2分钟?这句话不正确“…帧速率与处理器的频率相等…”。这不仅与处理器速度有关。关键是你不能用一个依赖于时间的程序来衡量上下文切换的开销。视频播放依赖于时间,i/o繁重的任务也依赖于时间。