Сообщение Re: Многопоточный код от 11.02.2016 18:19
Изменено 11.02.2016 18:21 Albeoris
Здравствуйте, _ichensky, Вы писали:
_>Идеально подошлобы что-то вроде Task.Factory.StarNew, но чтобы таска сразу получила найвысший приоритет перед остальными тасками и если понадобиться — были приостановлены все другие таски, но по-умолчанию Task.Factory может положить таску в пул и ожидать завершения некоторых других.
Нельзя -> нет исходников? Тогда воткнуть в него через IL в рантайме любой WaitHandle (lock, wait, pulse или более высокоуровневые, типа Auto/ManualResetEvent)
_>Идеально подошлобы что-то вроде Task.Factory.StarNew, но чтобы таска сразу получила найвысший приоритет перед остальными тасками и если понадобиться — были приостановлены все другие таски, но по-умолчанию Task.Factory может положить таску в пул и ожидать завершения некоторых других.
Нельзя -> нет исходников? Тогда воткнуть в него через IL в рантайме любой WaitHandle (lock, wait, pulse или более высокоуровневые, типа Auto/ManualResetEvent)
Re: Многопоточный код
Здравствуйте, _ichensky, Вы писали:
_>Идеально подошлобы что-то вроде Task.Factory.StarNew, но чтобы таска сразу получила найвысший приоритет перед остальными тасками и если понадобиться — были приостановлены все другие таски, но по-умолчанию Task.Factory может положить таску в пул и ожидать завершения некоторых других.
Нельзя -> нет исходников? Тогда воткнуть в него через IL в рантайме любой WaitHandle (lock, wait, pulse или более высокоуровневые, типа Auto/ManualResetEvent)
Любой поток может быть засуспенден системой. А в случае .NET, ещё и GC. Поэтому как бы ты не выставлял тайминги, найдётся ситуация, в которой они дадут сбой. И тут не важно, началось их выполнение одновременно или нет.
_>Идеально подошлобы что-то вроде Task.Factory.StarNew, но чтобы таска сразу получила найвысший приоритет перед остальными тасками и если понадобиться — были приостановлены все другие таски, но по-умолчанию Task.Factory может положить таску в пул и ожидать завершения некоторых других.
Нельзя -> нет исходников? Тогда воткнуть в него через IL в рантайме любой WaitHandle (lock, wait, pulse или более высокоуровневые, типа Auto/ManualResetEvent)
Любой поток может быть засуспенден системой. А в случае .NET, ещё и GC. Поэтому как бы ты не выставлял тайминги, найдётся ситуация, в которой они дадут сбой. И тут не важно, началось их выполнение одновременно или нет.