Hi Jonathan,

I wonder if using an executor to process SSLEngine tasks is useful at all, considering that the execute_task method is synchronized:

    protected void schedule_task(NextFilter next) {
        if (ENABLE_ASYNC_TASKS) {
            if (mExecutor == null) {
                execute_task(next);
            } else {
                mExecutor.execute(new Runnable() {
                    @Override
                    public void run() {
                        SSLHandlerG0.this.execute_task(next);
                    }
                });

and

    synchronized protected void execute_task(NextFilter next) {
        ...


Also the execute_task will pull tasks from the SSLEngine - we may have more than one, so it will loop on the tasks - and it's unlikely that we will have more tasks to execute when exiting the execute_tasks method.

The only benefit I can see is that the main thread will be freed for other tasks - like processing another IoSession - while tasks are being processed by another thread. And may be this is what was intended, but I wonder iff we should not simply spawn a dedicated thread for that purpose.

IMO, if we want to introduce an executor in the equation, it should be done in the execute_task method, not in the schedule_task, it would speed up the TLS processing, while also freeing the main thread fast enough - even a bit slower than having the task loop being processed by a dedicated thread.

wdyt?

--
*Emmanuel Lécharny - CTO* 205 Promenade des Anglais – 06200 NICE
T. +33 (0)4 89 97 36 50
P. +33 (0)6 08 33 32 61
[email protected] https://www.busit.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to