Блокировка STDIO: как проверить, соответствует ли каждый flockfile () функции funlockfile ()? - PullRequest
2 голосов
/ 22 июля 2011

У меня есть несколько подпрограмм, которые делают несколько записей в поток stdio для создания одного сообщения журнала.Чтобы сохранить каждое сообщение отдельным, даже в многопоточных приложениях, я заключаю в скобки каждое сообщение с вызовами flockfile () и funlockfile ().В моих модульных тестах я хотел бы убедиться, что замок не остался висящим, но как я могу это определить?

Я думал о выполнении ftrylockfile (), но блокировка рекурсивная, она будет успешной, если я сделаю это из того же потока, что и исходный flockfile ().Под колпаком находится счетчик блокировок, но я не вижу возможности прочитать его или проверить его нулевое значение.

1 Ответ

3 голосов
/ 22 июля 2011

Поскольку вы делаете это в модульном тесте, смоделируйте flockfile() и funlockfile(). В ваших издевательствах вы можете отслеживать счет и проверять, что он равен нулю, когда вы закончите.

...