vBulletin Search Engine Optimization
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| Currently PG win32 port mainly does the following to simulate signals: (*) the process who kill the signal: - put the signal in a named pipe, then it is done; (*) the process who should receive the signal: - a non-stop thread "pg_signal_thread" will read the signal from the pipe, and start another thread "pg_signal_dispatch_thread", which puts the signal in a local memory variable "pg_signal_queue" and SetEvent(local_memory_event_variable); - the main thread of this process could be awakened by the event from waiting status(like semop()) or CHECK_FOR_INTERRUPTS() actively; Could we simplify this process like this: (*) the process who kill the signal: - put the signal in a *shared memory variable pg_signal_queue* and SetEvent(*shared_memory_event_variable*), then it is done; (*) the process who should receive the signal: - the main thread of this process could be awakened by the event from waiting status(like semop()) or CHECK_FOR_INTERRUPTS() actively; -- there is no other threads of this process; Any show-stop reasons of not doing this? Regards, Qingqing |