канал C ++: он ждет записи - PullRequest
2 голосов
/ 27 июня 2011

Я использую каналы для связи между процессами.Когда я пишу в канал и читаю его медленнее, чем пишу, будет писать блок (), пока не будет возможна атомарная запись в канал?

Ответы [ 3 ]

1 голос
/ 27 июня 2011

write() не требуется для записи всех переданных данных - он может писать меньше, и вам нужно проверить, сколько фактически было написано.

1 голос
/ 27 июня 2011

Система, соответствующая POSIX, должна блокироваться.

Из справочной страницы write (2):

"POSIX требует, чтобы read (2), который может быть доказан после возвращения write (), возвращает новые данные. Обратите внимание, что не все файловые системы соответствуют POSIX "

1 голос
/ 27 июня 2011

Да, по крайней мере, если число записываемых байтов меньше, чем число, которое гарантированно будет атомарным.

...