У меня есть класс, который предоставляет два метода:
- GetObject
Получает один объект или возвращает ноль, если его нет.
- WaitForObject
Получает отдельный объект или ждет, пока их не станет.
Пример реализации:
class MyClass
{
MyStack stack;
public object GetObject()
{
return stack.Pop();
}
public object WaitForObject()
{
object returnValue;
while (returnValue == null)
returnValue = stack.Pop()
return returnValue
}
}
Если предположить, что MyStack
является поточно-ориентированным, как я могу сделать MyClass
поточно-безопасным? * 1020 Т.е. *
- GetObject
никогда не должен блокироваться
- Thread
выполнение WaitForObject
должно добавить все новые объекты в стек вместо GetObject
.
Что касается бонусных баллов, как пользователи, добавляющие объекты в стек, могут уведомлять слушателей о наличии нового объекта? (исключая необходимость опроса)