Hi,
an alternative would be to modify the execute_task method to become:
synchronized protected void execute_task(NextFilter next) {
Runnable task = null;
while ((task = mEngine.getDelegatedTask()) != null) {
try {
if (ENABLE_ASYNC_TASKS && (mExecutor != null)) {
mExecutor.execute(task);
} else {
task.run();
}
write_handshake(next);
} catch (SSLException e) {
So here, we push the tasks into an executor to be processed concurrently.
On 02/03/2022 07:05, Emmanuel Lécharny wrote:
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]