Size: a a a

2021 June 24

VS

Vladimir Shchur in F# Chat
у меня не воспроизводится на тривиальном примере
open System

[<EntryPoint>]
let main argv =
   let requestsMb = MailboxProcessor<int>.Start(fun inbox ->
       let rec loop () =
           async {
               match! inbox.Receive() with
               | 0 ->
                   printfn "0"
               | _ ->
                   printfn "1"
                   do! Async.Sleep 1000
                   return! loop()
                   
           }
       loop()
   )
   requestsMb.Post(1)
   requestsMb.Post(0)
   requestsMb.Post(1)
   Console.ReadKey() |> ignore
источник

VS

Vladimir Shchur in F# Chat
после нуля единицу не обрабатывает
источник

VS

Vasily Shapenko in F# Chat
Тест странненький
источник

VS

Vladimir Shchur in F# Chat
ну я тестировал то что ты предположил) накидываем сообщений в очередь чтобы к моменту выхода из нуля точно очередь была не пустой
источник

VS

Vasily Shapenko in F# Chat
Хммм
источник

AH

Ayrat Hudaygulov in F# Chat
Тогда вот невероятная теория - Post не тред сейф и если бомбить из более чем одного потока, то между завершением мейлбокса и выемкой следующего есть рейс кондишн.

Очень тупая теория
источник

VS

Vasily Shapenko in F# Chat
Ну тут скорее всего сообщение должно приходить в момент обработки
источник

VS

Vladimir Shchur in F# Chat
ну там если что еще сотню сообщений после этого принялось
источник

VS

Vladimir Shchur in F# Chat
то есть как будто не остановился вообще
источник

VS

Vasily Shapenko in F# Chat
А Error  у тебя там обрабатывается?
источник

AH

Ayrat Hudaygulov in F# Chat
А как из логов понятно что это тот же мейлбокс?
источник

VS

Vladimir Shchur in F# Chat
да, лог стоит на ошибку, но ошибки нету в логах
источник

VS

Vladimir Shchur in F# Chat
по нолику, мейлбокс один на класс ClientCnx, а при создании нового через Interlocked.Increment эта цифра увеличивается
источник

VS

Vladimir Shchur in F# Chat
т.е. там в логах еще есть clientCnx(1 и clientCnx(4
источник

VS

Vladimir Shchur in F# Chat
а это clientCnx(0
источник

VS

Vasily Shapenko in F# Chat
Чот не видно, где там по коду инкрементит
источник

VS

Vladimir Shchur in F# Chat
источник

VS

Vasily Shapenko in F# Chat
А, ыижу
источник

VS

Vasily Shapenko in F# Chat
А код генератора можно?
источник

VS

Vladimir Shchur in F# Chat
let getNextClientCnxId(): ClientCnxId =
   % (uint64 <| Interlocked.Increment(&clientCnxId))
источник