ITADN

process_release/1 and process_wait/2 api cleanup

#3308Opendanilp-id 创建于 2026-04-25
D
danilp-idcommented
From [swi-prolog](https://www.swi-prolog.org/pldoc/doc_for?object=process_release/1) version of process module: > process_release(+PID) Release process handle. In this implementation this is the same as process_wait(PID, _). in swi-prolog: ```prolog ?- process_create(path(true), [], [process(P)]), process_wait(P, R), process_id(P, ID). P = ID, ID = 337330, R = exit(0). ?- process_create(path(true), [], [process(P)]), process_release(P), process_id(P, ID). P = ID, ID = 337333. ``` in scryer: ```prolog ?- process_create("true", [], [process(P)]), process_wait(P, R), process_id(P, ID). P = '$process'(337810), R = exit(0), ID = 337810. ?- process_create("true", [], [process(P)]), process_release(P), process_id(P, ID). error(existence_error(process,'$dropped_value'),[predicate-process_id/2|process_id/2]). ``` I think `process_wait/2` should do all the cleanup. Also, is there any reason to wrap a process in a custom struct? Why not just pass the process id around like swi does it?
22 条评论