У меня есть код, который я изменяю. Не вдаваясь в огромные подробности о том, что он на самом деле делает, его можно суммировать, создав файл, а затем отправив его на принтер. По существу следующее:Состояние гонки принтеров?
File file = new File("/tmp/12345.pdf");
//Lots of magical code that creates/writes to said file
...
...
...
//sendToPrinter essentially builds up a print command to send to /usr/bin/lp and then executes it.
sendToPrinter(printer, details, file);
file.delete();// This is the line I'm curious about.
Мой вопрос заключается в том, что вызов ПОЛ сделан прежде чем мы получим file.delete(). Однако возникает ли риск создания условия гонки, когда я фактически удаляю файл до того, как принтер будет готов?
С предварительного тестирования у меня еще есть проблема, но что-то об этом беспокоит меня. Я создал риск состояния гонки, выполнив это?
Редактировать: Уточнение, основанное на комментариях. Да, я использую lp, и sendToPrinter, похоже, ждет кода возврата. Код не является асинхронным.
Предполагая, что вы имеете в виду вы выполняете внешний '/ USR/BIN/lp' (или аналогичный) команду, она будет зависеть от того ждет ли sendToPrinter(), пока команда LP не будет завершен или не – nos
Is ваша программа синхронна или асинхронна? вы работаете на нескольких потоках? –
Что такое 'sendToPrinter (...)'? Если это асинхронно (что я сомневаюсь в этом), тогда «да», у вас может быть состояние гонки; иначе (скорее) нет. –