Я сомневаюсь, что Task.Wait()
внутри имеет цикл while
. Но как тогда его реализовали? Через хитрые локи?
Я сомневаюсь, что Task.Wait() внутри имеет цикл while.
Открываем исходники, читаем и доходим до метода SpinThenBlockingWait()
. Как видно даже из названия метода, схема следующая: cначала небольшой спин (фактически тот самый "цикл while") в надежде, что таск завершится. Если не таск не завершился, уход на ожидание: на таск вешается продолжение, которое сигнализирует ManualResetEvent
, и Wait()
завершится, когда сработает ManualResetEvent
.
По такой схеме - спин, а потом уход на ожидание - работают многие объекты синхронизации. Спин дешевый, а синхронизация дорогая. Поэтому можно покрутиться некоторое время в ожидании нужного события, а потом уйти в синхронизацию.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не могу отредактировать ячейки из DataGridView хотя ReadOnly = False; Заполняю грид так :
Задача: есть DataGridView, в который выводится разная нужная информацияCо временем информации, которую хотят видеть, много прирастает