From 35babffd0eff1e0b04092e9d5f9257b477441033 Mon Sep 17 00:00:00 2001 From: kpayson64 Date: Thu, 10 May 2018 15:13:59 -0700 Subject: Changes --- doc/fork_support.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'doc/fork_support.md') diff --git a/doc/fork_support.md b/doc/fork_support.md index ba8483815d..d0f59f25da 100644 --- a/doc/fork_support.md +++ b/doc/fork_support.md @@ -4,9 +4,9 @@ In Python, multithreading is ineffective at concurrency for CPU bound tasks due to the GIL (global interpreter lock). Extension modules can release the GIL in CPU bound tasks, but that isn't an option in pure Python. Users use libraries such as multiprocessing, subprocess, concurrent.futures.ProcessPoolExecutor, -etc, to work around the GIL. These modules call fork() underneath the hood. Various issues have +etc, to work around the GIL. These modules call ```fork()``` underneath the hood. Various issues have been reported when using these modules with gRPC Python. gRPC Python wraps -gRPC core, which uses multithreading for performance, and hence doesn't support fork(). +gRPC core, which uses multithreading for performance, and hence doesn't support ```fork()```. Historically, we didn't support forking in gRPC, but some users seemed to be doing fine until their code started to break on version 1.6. This was likely caused by the addition of background c-threads and a background @@ -22,7 +22,7 @@ has been used can result in deadlocks/corrupted wire data. ## 1.9 ## A regression was noted in cases where users are doing fork/exec. This -was due to pthread_atfork() handler that was added in 1.7 to partially +was due to ```pthread_atfork()``` handler that was added in 1.7 to partially support forking in gRPC. A deadlock can happen when pthread_atfork handler is running, and an application thread is calling into gRPC. We have provided a workaround for this issue by allowing users to turn @@ -31,10 +31,10 @@ This should be set whenever a user expects to always call exec immediately following fork. It will disable the fork handlers. ## 1.7 ## -A pthread_atfork() handler was added in 1.7 to automatically shut down +A ```pthread_atfork()``` handler was added in 1.7 to automatically shut down the background c-threads when fork was called. This does not shut down the background Python thread, so users could not have any open channels when -forking(). +forking. # Future Work # -- cgit v1.2.3