Good points.

And, is here even a reason to keep our own thread APIs? We only support posix 
threads anyways.

— Leif 

> On Feb 28, 2019, at 21:46, James Peach <jpe...@apache.org> wrote:
> 
> 
> 
>> On Feb 28, 2019, at 9:17 AM, Fei Deng <duke8...@apache.org> wrote:
>> 
>> void TSThreadSetCancelState(TSThread thread, int state);
>> void TSThreadSetCancelType(TSThread thread, int type);
> 
> I guess you are supposed to pass PTHREAD_CANCEL_* for type type parameter? I 
> don't like how this leaks the pthread implementation. An API should be 
> self-contained. you also don't capture the possible EINVAL return value here.
> 
>> void TSThreadCancel(TSThread thread);
> 
> I'm generally -1 on pthread cancellation since I feel like it is very hard to 
> use without leaking resources. Maybe your use case can be solved by an 
> in-band notification to the thread that it should exit (e.g. atomic variable, 
> massage send, file descriptor signal) that is then synchronized on the thread 
> join.
> 
> Maybe diligent application of pthread_cleanup_push(3) can make cancellation 
> more robust, but that's not part of this proposal.
> 
> FWIW I'd be sympathetic to a general API that just returns the underlying 
> pthread_t so you can color outside the lines if needed:
> 
> void *TSThreadGetPlatformThread((TSThread)
> 
>> void *TSThreadJoin(TSThread thread);
> 
> This seems quite reasonable.
> 
>> 
>> Some plugins have been causing a lot of crashes during ATS shutdown, the
>> root cause is due plugin threads are not aware of ATS is shutting down and
>> still trying to do stuff such as initiating ssl handshake. The workaround
>> right now is to set a flag using the newly implemented
>> `SHUTDOWN_LIFECYCLE_HOOK`, but there will still be race conditions since
>> some threads have a very long turnaround time.
>> 
>> These new APIs expose corresponding pthread calls so plugins can have a
>> better control of its own threads.
> 

Reply via email to