hiya, well, in amongst all this about threads etc. i just wanted to let you know that i happened across the context_app example in the dce 1.22 codebase. it is an example client and server that maintains a context - a persistent connection across multiple remote function calls.
this implies that if the connection dies without the client destroying the context, then the server must do it _for_ you [by calling context_name_t_rundown which you *have* to provide: it calls it on every outstanding context of type 'context_name_t' it is an auto-generated function.] and that means killing a thread. and _that_ implies thread cancellation and cleanups. and it works. therefore, i conclude that the dce/rpc codebase has successfully implemented thread cancellation in their POSIX/Draft4 thread library. additionally, the context app, being threaded, has to have locking on the little 'stores' it maintains. i do not know what it means [well, okay, i do, but i've never actually programmed with threads is more like it] but there is some code in there that mentions 'mutex'. i presume that this is working, too. does this help answer your question, justin? luke p.s. the little 'stores' above - explanation: the demo is to create an in-memory 'store', and to be able to do file-like i/o (read, write, seek) on it. it's actually a static array of memory blocks, so they have to do mutex around it.
