What I was trying to say was, if we keep the thread handles abstract, we
can switch from pthreads to stdc++ threads without impacting the plugins.

On Tue, Mar 5, 2019 at 5:02 PM Leif Hedstrom <zw...@apache.org> wrote:

>
>
> > On Mar 5, 2019, at 2:24 PM, Walt Karas <wka...@verizonmedia.com.INVALID>
> wrote:
> >
> > Would we ever want to switch over to using libstdc++ threads?
>
>
> I’m likely ok with that, but we have to figure out the story with
> retaining C APIs. I.e. this is a big decision to make, making ts/ts.h
> requiring C++ to compile.
>
> I’m not *opposed* to such a change; however, I feel it needs to be a well
> thought through and generally accepted community decision. This ties into
> other things, such as how to change TSDebug() to use the bwformat APIs.
>
> — Leif
>
> >
> > On Tue, Mar 5, 2019 at 3:12 PM Leif Hedstrom <zw...@apache.org> wrote:
> >
> >> I still think it might be time to investigate if eliminating this
> >> abstraction is better. Like I said, we only support posix threads
> anyways
> >> so this abstraction is just extra overhead I assume ?
> >>
> >> — Leif
> >>
> >>> On Mar 4, 2019, at 09:57, Fei Deng <f...@verizonmedia.com.invalid>
> >> wrote:
> >>>
> >>> I don't like setting cancel state and type myself either, but at the
> >> time I
> >>> couldn't come up with other ways of making sure the thread are in the
> >> right
> >>> state/type. I think the idea just returning a pthread_t to the plugin
> is
> >> a
> >>> good idea, it can also solve the problem with the set state/type, I
> >> didn't
> >>> know we are allowed to return that information since we wrapped it so
> >> deep.
> >>>
> >>>> On Thu, Feb 28, 2019 at 11:02 PM Leif Hedstrom <zw...@apache.org>
> >> wrote:
> >>>>
> >>>> 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