Таким образом, несколько ядер совпадают с очередями?
Не совсем. Очередь - это абстракция программирования, ядро - это физический ресурс в вашем процессоре. Нет единственной связи между очередью и ядром, хотя в любой момент времени можно сказать, что заданная очередь выполняет задание на заданном ядре.
Очередь состоит из множества потоков?
Очередь состоит из задач. Задачи назначаются потокам системой управления очередями, когда наступает время для выполнения этой задачи. Темы являются ресурсами ОС и распределяются по ядрам, которые эффективно запускают их и не имеют представления о том, какая задача (за исключением процессоров Hyper-Threading).
Если вы не учитываете аппаратное многопоточное (например, Hyper-threading), то в любой момент времени ядро запускает конкретный поток; когда наступает время запуска другого потока, в этом ядре возникает контекстный переключатель. Если вы учитываете аппаратную многопоточность, вы можете иметь несколько потоков, работающих на виртуальных ядрах, размещенных в одном физическом ядре.
Связь между очередями и потоками непрозрачна.Очередь может управлять несколькими потоками одновременно или несколькими потоками один раз за раз или всего один раз; в первом случае у вас есть параллельная очередь, способная выполнять параллельные задачи на одновременных потоках; во втором и третьем случае у вас есть последовательная очередь.
Каждую нить выполняет задачу?
В любой момент времени нить выполняет задачу. Вы можете создавать нити, выполняющие их задачу, и умирать; или вы можете иметь длинные потоки (т. е. основной поток), которые выполняют несколько задач.
Возможно, это довольно озадачительно в начале, вам может потребоваться некоторое чтение об операционных системах и, возможно, высокоуровневых архитектурах процессоров, чтобы это полностью понять.
GCD нацелен на то, чтобы позволить вам рассуждать исключительно в абстрактных терминах: то есть, с точки зрения задач и очередей, и забывать о потоках и ядрах, которые рассматриваются как своего рода «средства реализации» или детали низкого уровня, которые вы может выйти в систему для эффективного использования.
Благодарим за прекрасное объяснение! –