Disable detached worker completions before draining jobs
This commit is contained in:
1 parent
8f3d9edf8b
commit
781d41e003
1 file changed
+4
-3
@@ -1,7 +1,8 @@
|
||||
/* Единственный дисковый поток модуля. submit/done выполняются в uasync, work —
|
||||
* в pthread. Очередь ограничена; completion резервируется до передачи работы.
|
||||
* Для обязательной очистки reserve выполняется до открытия файлов. destroy вне
|
||||
* собственных callbacks ждёт работ и доставляет done, включая поставленные ими cleanup jobs.
|
||||
* Для обязательной очистки reserve выполняется до открытия файлов. destroy в uasync
|
||||
* ждёт работ и доставляет done, включая поставленные ими cleanup jobs; допустим из внешней команды.
|
||||
* Отмена completion удаляет task и из общей очереди, и из ещё не исполненной части batch uasync.
|
||||
* data/arg заимствованы до done; worker освобождает только собственную оболочку работы.
|
||||
* ua/work/done и worker обязательны; ua живёт до конца destroy. Останавливать worker из done нельзя. */
|
||||
#ifndef MEMBER_FILES_WORKER_H
|
||||
@@ -24,7 +25,7 @@ void mf_worker_submit(struct mf_worker* worker, mf_work_fn work, void* data, mf_
|
||||
* После вызова резерв нельзя освобождать/использовать повторно. Work выполняется FIFO, done ровно один раз. */
|
||||
void mf_worker_submit_reserved(struct mf_worker* worker, struct mf_work* reserved,
|
||||
mf_work_fn work, void* data, mf_done_fn done, void* arg);
|
||||
// После quiesce владельца, вне собственных callbacks: дождаться работ и cleanup continuations без остановки pthread.
|
||||
// После quiesce владельца в uasync, вне собственных done: дождаться работ и cleanup continuations, не останавливая pthread.
|
||||
// Не запускает uasync рекурсивно; порядок done при drain не обещается. NULL допустим.
|
||||
void mf_worker_drain(struct mf_worker* worker);
|
||||
/* Drain, затем join и освобождение. Работы не прерываются и получают обычный done(0); NULL допустим. */
|
||||
|
||||
Reference in new issue
Block a user