Size: a a a

2018 January 15

TN

Timofey Naumenko in pro.osdev
Но каким-то хреном возможна нормальная реализация нескольких слушателей
источник

BD

Berkus Decker in pro.osdev
так же как в work stealing threads
источник

BD

Berkus Decker in pro.osdev
то есть они не будут получать все сообщения, а только часть
источник

BD

Berkus Decker in pro.osdev
кривой воркэраунд - посылать одно сообщение по количеству читателей, но это будет работать очень хреново
источник

BD

Berkus Decker in pro.osdev
просто ОЧЕНЬ
источник

BD

Berkus Decker in pro.osdev
если им не нужно всем получать одно и то же сообщение - то всё ок
источник

TN

Timofey Naumenko in pro.osdev
Тогда нет отличий от пайпа
источник

BD

Berkus Decker in pro.osdev
а у пайпа может быть много читателей?
источник

F

FailsBot in pro.osdev
¯\_(ツ)_/¯
источник

TN

Timofey Naumenko in pro.osdev
Ответ: это Record-oriented device
источник

TN

Timofey Naumenko in pro.osdev
Ответ на начальный вопрос
источник

BD

Berkus Decker in pro.osdev
хм
источник

BD

Berkus Decker in pro.osdev
окей, это не стрим, как пайп, а рекорд, дальше что
источник

BD

Berkus Decker in pro.osdev
можно ссылаться на уже кем-то прочитанные записи?
источник

TN

Timofey Naumenko in pro.osdev
Нет
источник

BD

Berkus Decker in pro.osdev
> Remember, mailboxes are record-formatted devices.

ok, so what
источник

BD

Berkus Decker in pro.osdev
я правильно понимаю, что суть вопроса была просто в том, что каждый читатель получает ровно 1 запись при чтении, а не произвольное количество байт? и в этом вся разница?
источник

BD

Berkus Decker in pro.osdev
как-то пиздецки издалека зашел если так
источник

BD

Berkus Decker in pro.osdev
вторая ссылка в гугле дает нам это

Mailboxes are definitely thread safe in the sense that multiple threads cannot write to a mailbox "at the same time" because mailboxes are robustly synchronised at the operating system level. One thread will always "win" the race.

As others have mentioned, mailbox I/O is, by default, end-to-end synchronous. That is, the writer will wait for the message to be read before proceeding. This may have an effect on threading, as a thread may block on a mailbox write. If that prevents another thread from reading the mailbox, you could have a deadlock (depends on your threading mechanism being capable of switching threads during an OS level I/O stall).

You may not have control over mailbox read behaviour when do a device independent/blind I/O. If you access a mailbox explicitly, you can do asynch I/O.
источник

BD

Berkus Decker in pro.osdev
и

> Yes you can open the mailbox from multiple streams. The "records" will be processed in order of receipt.
источник