2 つのスレッド間で TCP トンネリングを実行しようとすると、この問題が発生します。
Thread 1
listen at Port
accept
then add the sock after accept to epoll_ctl
while (1)
epoll_wait
read whatever from Port to remote (tunnelling)
Thread 2
connect to Port
if connected
communicate...
私が実際に観察したことは、スレッド 2 が接続時にブロックされている間、スレッド 1 が epoll_wait を実行して接続情報をリモートに送信する機会がないことです。したがって、両方のスレッドが進行することはありません。
考えられる解決策の 1 つは、マルチスレッドの代わりに親子プロセスを使用することです。しかし、それに切り替える前に、マルチスレッドでそれを行うことはできますか? ここで必要なのは、単なるポーリングではなく、ある種の割り込みだと思います。右?
洞察をありがとう。