HP OpenVMS Systemsask the wizard |
The Question is: one thread is executing a some C++ functionality. can that thread spawn another thread that executes an objects method? If possible can you give a brief example? Do you know of any documentation that I can use to learn more? I appreciate your time. Joe Martorana The Answer is : Provided that you guarantee that the object's lifetime is valid in the other thread, and provided that you interlock any necessary (shared) data structures, you should be to do this. The Wizard would guess that the folks maintain object-oriented database software perform this task regularly. The following is some skeleton example code; the Wizard would hope it counts as a brief example: Callee in new thread: void * normal_function_or_non_static_member_function(void * void_handle) { handle_t * handle = (handle_t *) void_handle; (handle->object)->method(handle->args...); } Caller from wherever: ... handle->object = object; handle->args = ...; // both object and handle must outlive their usage in the other thread syscode = pthread_create(&thread_id, NULL, normal_function_or_non_static_member_function, (void *) handle); -- As an aside: the Wizard does not believe that there is anything about the DEC C++ invocation method (e.g. possible accounting, hinted as one possibility in the Alpha Architecture Reference Manual (ARM), and which is why it is technically illegal to call methods of NULL objects) that might prevent the C++ RTL from interlocking the object.
|