2013-07-09 2 views
0

Вопрос о многопоточности. Скажем, у меня есть 3 потока, основной, child1 и child2. Происходит ли процесс, выполняющий эти потоки, в том порядке, в котором он работает в одном потоке в течение короткого промежутка времени, затем работает на другом, и так далее и вперед, и продолжает переключать, или это потоки, которые никогда не останавливаются обработать? Где-то я читал, что поток останавливается без финиша, затем обрабатывается и останавливается другой поток, затем обратно в thread1 и т. Д. Дальше, но это не имеет никакого смысла, если какие-либо потоки будут остановлены, поскольку точка mutlithreading - это то, что они все одновременно и все работают одновременно, но как процессор делает это?Выполняет ли процесс выполнение потоков в последовательном порядке?

Это в .Net/C#.

+0

Слишком широкая и/или вне темы, но в основном в одноядерной системе O/S приостанавливает поток и запускает другой, если он работает в течение 10-15 миллисекунд (в Windows), не вызывая ничего, например, I/O, который дает. В многоядерных системах потоки могут работать по-настоящему параллельно. –

+0

Задача операционной системы - запустить множество потоков на нескольких процессорных ядрах. Что он делает, если необходимо, путем прерывания текущего потока, чтобы позволить другому использовать процессор. Это не отличается для кода C#. –

ответ

1

сценарий вы описываете это путь побежал нить в пожилом возрасте, прежде чем многоядерный

OS запланирован поток последовательно на основе в своих приоритетах, но теперь ... Я полагаю, у вас есть по крайней мере 2-жильный где 2 поток может запускаться одновременно, а третий поток будет расписанием и прерывать один из другого !!!!

0

Сценарий, который вы описываете, является правильным, за исключением того, что каждый поток будет нормально работать каждый раз на процессорное ядро ​​.

Упрощенный; если 3 потока активны на 4 ядрах, им всегда будет разрешено запускать, так как всегда есть доступное ядро ​​для их запуска, а если 3 потока активны на 2 ядрах, только два могут запускаться в любое время, поэтому им придется принимать получается.

0

Операционные системы расписывают потоки для выполнения на доступных ядрах процессора (реальных или виртуальных). В прошлом большинство компьютеров имели одноядерные процессоры, и, таким образом, только один поток мог выполняться одновременно. Современные процессоры обычно представляют собой 2, 4 или 8 основных систем. Некоторые из этих ядер являются виртуальными, такими как процессоры Intel с гиперпотоком, у которых в два раза больше виртуальных ядер как физических ядер.

Тем не менее, существует почти всегда больше потоков, чем ядра ЦП, поэтому ОС будет уделять приоритетное внимание всем потокам системы, чтобы обеспечить их максимально эффективное использование. Нити, созданные , ваш процесс может или не может выполняться параллельно в течение любого заданного промежутка времени, но вы должны предположить, что они будут.

Смежные вопросы