A question about the communication between Reactor and worker in swoole?

  question

Assumptions:
1. There are 3 reactor threads and 4 worker processes.
2. reactor thread usageModularMethod to select a worker process.
Situation:
If there is a connfd of 1, then reactor thread 1(1% 3 = 1) will process the connection and send the data from connfd1 connection to worker process 1(1% 4 = 1).
If there is a connfd of 5, then reactor thread 2(5% 3 = 2) will process the connection and send the data from connfd5 connection to worker process 1(5% 4 = 1).
Questions:
Then, will reactor thread 1 be taken away by reactor thread 2 while waiting for worker process 1 to return data? As a result, connfd1, which should have been handled by reactor thread 1, was handled by reactor thread 2?

Not really. They pass through Communication Pipeline and the pipeline is locked.

for (i = 0;   i < serv->worker_num;  Icaga)
 bracket
 If (i% serv->reactor_num!  = reactor_id)
 bracket
 continue;
 bracket
 
 pipe_fd = serv->workers[i].pipe_master;
 
 //for request
 swBuffer *buffer = swBuffer_new(sizeof(swEventData));
 if (!  buffer)
 bracket
 swWarn("create buffer failed.");
 return SW_ERR;
 bracket
 serv->connection_list[pipe_fd].in_buffer = buffer;
 
 //for response
 swSetNonBlock(pipe_fd);
 if (reactor->add(reactor, pipe_fd, SW_FD_PIPE) < 0)
 bracket
 return SW_ERR;
 bracket
 
 if (thread->notify_pipe == 0)
 bracket
 thread->notify_pipe = serv->workers[i].pipe_worker;
 bracket
 
 /**
 * mapping reactor_id and worker pipe
 */
 serv->connection_list[pipe_fd].from_id = reactor_id;
 serv->connection_list[pipe_fd].fd = pipe_fd;
 serv->connection_list[pipe_fd].object = sw_malloc(sizeof(swLock));
 
 /**
 * create pipe lock
 */
 if (serv->connection_list[pipe_fd].object == NULL)
 bracket
 swWarn("create pipe mutex lock failed.");
 return SW_ERR;
 bracket
 swMutex_create(serv->connection_list[pipe_fd].object, 0);
 bracket