Взаимоблокировки и полная асинхронностьC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Взаимоблокировки и полная асинхронность

Сообщение Гость »


При обсуждении фрагмента кода с коллегой возникли вопросы о его надежности. Особым предметом разногласий является использование Task.Run и Task.WhenAll в методе CreateAxelAsync.

Перейду к делу. У меня есть два вопроса по поводу приведенного ниже кода:
[*]Склонен ли он к взаимоблокировкам? [*]Нарушает ли это принцип полной асинхронности? публичная запись Vehicle( Axel FrontAxel, Axel RearAxel ) { } общедоступная запись Axel(IList Wheels) { } общедоступная запись Wheel( float TirePressure ) { } общедоступный статический класс VehicleFactory { // асинхронный public static async Task CreateAsync( intwheelsPerAxel ) { вар frontAxelTask ​​= CreateAxelAsync(wheelPerAxel); вар backAxelTask ​​= CreateAxelAsync (wheelsPerAxel); ждут Task.WhenAll(frontAxelTask, backAxelTask); вернуть новое транспортное средство (frontAxelTask.Result, backAxelTask.Result); } // асинхронный частная статическая асинхронная задача CreateAxelAsync( intwheelsPerAxel ) { варwheelTasks = новая задача[wheelPerAxel]; for (int i = 0; i CreateWheel(wheelIndex)); } Колесо[] колеса = ждут Task.WhenAll(wheelTasks); вернуть новый Аксель(колеса); } // синхронизация частное статическое колесо CreateWheel( intwheelIndex ) { float TirePressure = CalculateTirePressure(wheelIndex); вернуть новое колесо (tirePressure); } // синхронизация частный статический float CalculateTirePressure( intwheelIndex ) { плавающее давление в шинах; // выполняем некоторую обработку, связанную с процессором, и назначаем ее шинеPressure возврат давления в шинах; } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Std::Lock позволяет избежать взаимоблокировки, но эта программа зависает
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как решить проблему взаимоблокировки в ColdFusion 9: coldfusion.util.AbstractCache$Lock
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Асинхронность/ожидание в Python и Javascript [закрыто]
    Гость » » в форуме Python
    0 Ответы
    62 Просмотры
    Последнее сообщение Гость
  • Должен ли я установить асинхронность для анимации UIView или нет?
    Anonymous » » в форуме IOS
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Как запросить много файлов на серверах? (синхронизация, асинхронность, другой способ)
    Гость » » в форуме C#
    0 Ответы
    38 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»