Информация об изменениях

Сообщение Re[7]: Interlocked от 29.12.2018 11:32

Изменено 29.12.2018 11:43 Sharov

Re[7]: Interlocked
Здравствуйте, RushDevion, Вы писали:

RD>Здравствуйте, Sharov, Вы писали:

S>>Здравствуйте, RushDevion, Вы писали:
RD>>> public Task<T> GetValueAsync()
RD>>> {

RD>>> // Ошибка инициализации? Сбросим текущую таску в null, чтобы перезапуститься при след. обращении

RD>>> task.ContinueWith(_ =>
RD>>> Interlocked.CompareExchange(ref m_Value, null, task),
RD>>> TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously);

RD>>> return task;

RD>>> }

S>>А тут rc не будет случаем? Может continuation прицепить к родителю (task)?

RD>Так оно и цепляется к task
RD>Я возможностей для rc не вижу.

Пользователь может воспользовать знач. task, до того как оно сброситься в null.
Re[7]: Interlocked
Здравствуйте, RushDevion, Вы писали:

RD>Здравствуйте, Sharov, Вы писали:

S>>Здравствуйте, RushDevion, Вы писали:
RD>>> public Task<T> GetValueAsync()
RD>>> {

RD>>> // Ошибка инициализации? Сбросим текущую таску в null, чтобы перезапуститься при след. обращении

RD>>> task.ContinueWith(_ =>
RD>>> Interlocked.CompareExchange(ref m_Value, null, task),
RD>>> TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously);

RD>>> return task;

RD>>> }

S>>А тут rc не будет случаем? Может continuation прицепить к родителю (task)?

RD>Так оно и цепляется к task
RD>Я возможностей для rc не вижу.

Пользователь может воспользовать знач. task, до того как оно сброситься в null.

Уточню, что прицепив его AttachToParent, task не будет считаться законченным, пока не закончаться его потомки. Как-то так...(могу ошибаться)