У меня есть непонимание разницы между однопоточным и многопоточным программированием, поэтому я хочу получить ответ на следующий вопрос, чтобы все было ясно.
Предположим, что существует 9 независимых задач, и я хочу выполнить их с помощью однопоточной программы и многопоточной программы. В основном это будет примерно так:
однопоточных:
- Execute task 1
- Execute task 2
- Execute task 3
- Execute task 4
- Execute task 5
- Execute task 6
- Execute task 7
- Execute task 8
- Execute task 9
Многопоточное:
Резьба1:
- Execute task 1
- Execute task 2
- Execute task 3
Резьба2:
- Execute task 4
- Execute task 5
- Execute task 6
Thread3:
- Execute task 7
- Execute task 8
- Execute task 9
Как я понимаю, только один поток будет выполняться за один раз (получить CPU), и как только квант закончен, планировщик потоков даст процессорному времени другому потоку.
Итак, какая программа будет закончена раньше? Это многопоточная программа (логически)? или это однопоточная программа (поскольку многопоточность имеет много контекстных переключений, которая занимает некоторое время)? и почему? Мне нужно хорошее объяснение, пожалуйста:)