LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

По сути нужно внутри кода потока извне вызвать исключение времени выполнения. Вот как это сделать технически - большой вопрос. Я лично против включения этой логики в сам код потока по ряду причин, включая и ту, что разработчик этого кода может попросту ошибиться с местом вставки проверки флага «пора на боковую». А самое главное - это нивелирует сам подход, потому что с таким же успехом можно в коде вычислительного цикла проверять сразу и время исполнения, зачем нам тогда вообще потоки?

Это абсолютно нормальный подход, который все используют, ничего такого тут нет. Как ты можешь внутри кода потока вызвать какое-то исключение? Там процессор молотит. Тут есть два варианта. Или у тебя поток висит на вводе/выводе, тогда ты можешь сделать универсальный код и написать свой код ввода/вывода, который будет кидать исключение при interrupt-е (например примерно так сделано в Java), но если у тебя поток не висит на вводе/выводе, то это не поможет; либо ты можешь написать свой компилятор, который помимо прочего ещё будет эту проверку добавлять во все циклы, но суть останется та же, установка флага извне и периодическая проверка этого флага.

Потоки нужны, чтобы использовать больше одного ядра процессора. Больше они ни для чего не нужны. Ну т.е. они бывают удобны для некоторых алгоритмов, бывают удобны для серверов, но не необходимы.

Исходная версия Legioner, :

По сути нужно внутри кода потока извне вызвать исключение времени выполнения. Вот как это сделать технически - большой вопрос. Я лично против включения этой логики в сам код потока по ряду причин, включая и ту, что разработчик этого кода может попросту ошибиться с местом вставки проверки флага «пора на боковую». А самое главное - это нивелирует сам подход, потому что с таким же успехом можно в коде вычислительного цикла проверять сразу и время исполнения, зачем нам тогда вообще потоки?

Это абсолютно нормальный подход, который все используют, ничего такого тут нет. Как ты можешь внутри кода потока вызвать какое-то исключение? Там процессор молотит. Тут есть два варианта. Или у тебя поток висит на вводе/выводе, тогда ты можешь сделать универсальный код и написать свой код ввода/вывода, который будет кидать исключение при interrupt-е (например так сделано в Java), но если у тебя поток не висит на вводе/выводе, то это не поможет; либо ты можешь написать свой компилятор, который помимо прочего ещё будет эту проверку добавлять во все циклы, но суть останется та же, установка флага извне и периодическая проверка этого флага.

Потоки нужны, чтобы использовать больше одного ядра процессора. Больше они ни для чего не нужны. Ну т.е. они бывают удобны для некоторых алгоритмов, бывают удобны для серверов, но не необходимы.