2016-12-29 3 views
2

у меня есть простой, но не простой вопросМожет ли компьютер (многоканальный или одноядерный) запускать много потоков одновременно

Может ли компьютер (многоканальный или одноядерный) запускать много потоков одновременно, тот же время, я имею в виду, что два или более потока выполняются одновременно с выполнением?

+0

Одно ядро ​​может работать с двумя потоками, если оно имеет гиперпоточность. –

+0

Не совсем. Одноядерный процессор может запускать столько потоков, сколько хотите, хотя НЕ параллельно. Это относится даже к ядрам с HT - Hyper-Threading, ускоряет переключение контекста между потоками, но не позволяет запускать их параллельно, поскольку это все еще одно ядро ​​с единым вычислительным блоком. –

ответ

3

Способность работать несколько потоков одновременно является причиной того, почему многоядерные процессоры производятся. С каждым разом становится все труднее повысить эффективность одноядерного процессора по различным причинам. В то же время может быть выполнено столько потоков, сколько количество ядер/процессоров, которые у вас есть. Если у вас несколько многоядерных процессоров, максимальное число потоков, работающих параллельно, будет num_cpus * cores_per_cpu. Если количество потоков превышает количество доступных ядер, они будут выполняться чересстрочно.

2

Вы можете создавать несколько потоков в своей среде и иметь одно ядро ​​центрального процессора для выполнения этих потоков. Однако их выполнение будет не параллельно, а просто параллельным. Другими словами, CPU будет выполнять один поток (частично или полностью) сначала, а затем другой поток. Если в первом потоке была оставлена ​​работа, она может снова вернуться к первому потоку и выполнить еще несколько инструкций. Таким образом, потоки прогрессируют одновременно. Если потоки выполнялись на более чем одном ядре ЦП, то они могут быть выполнены одновременно, что означает, что они выполняются в параллельно.

Таким образом, несколько потоков на одном ядре процессора могут выполняться одновременно. Несколько потоков на нескольких ядрах процессора могут выполняться одновременно или параллельно.

Смотрите также этот ответ: Can multithreading be implemented on a single processor system?

0

... в то же время, то же самое время, я имею в виду ... в то же время исполнения ...

Звуки как вы пытаетесь найти формально способ задать свой вопрос.

Слова «в то же время» обычно не появляются в официальных дискуссиях о параллелизме.

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

Всякий раз, когда вы пытаетесь доказать поведение какой-либо системы, и ваше доказательство вращается вокруг событий, A и B то либо;

  • Вы знаете, или может доказать, что А происходит до B,
  • Вы знаете или можете доказать, что B происходит до А,
  • Ваше доказательство не зависит от порядка, в котором они происходят, или
  • Ваше доказательство будет терпеть неудачу.

Это единственные возможности. Если ваше доказательство будет терпеть неудачу, вы не сможете его спасти, сказав, что «A и B произойдут в то же время».

Когда ваше доказательство вращается вокруг двух интервалов, I и J, то либо;

  • вы знаете или может доказать, что я финиширует перед началом J или
  • вы знаете или можете Prova, что J заканчивается перед началом I, или
  • двух интервалов перекрытия .

«Перекрытие» является предпочтительным словом в официальных обсуждениях. Итак, ...

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

+0

Спасибо, сэр за вашу помощь –

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