Skip to content

Conversation

@vologin-dmitry
Copy link
Owner

No description provided.

Copy link

@yurii-litvinov yurii-litvinov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В целом всё так, но надо больше тестов

let holder = LazyFactory<obj>.LockMultiThreadLazy(fun () -> obj())
let toCompare = holder.Get()
for i in 1..100500 do
holder.Get() |> should equal toCompare

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Так это ж не многопоточно. Тесты пока нигде не проверяют, что если из нескольких потоков подёргать Lazy, всё хорошо будет. Тем более что самое интересное в многопоточном случае --- это гонки при первом Get, а тут он делается даже до цикла, так что если бы цикл был параллельным, это бы тоже было непоказательно

open LockMultiThreadLazy
open LockFreeLazy

type LazyFactory<'a> =

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тоже неплохо бы комментарии

Copy link

@yurii-litvinov yurii-litvinov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не проверяется, что в случае не-lock-free-многопоточного теста вызов supplier делается ровно один раз, но лучше, чем ничего, да. Зачтена.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants