mfavant / tubekit

NEW PROJECT https://github.com/crust-hub/avant
MIT License
0 stars 0 forks source link

feat: One Thread One Loop, QPS optimization. #23

Closed gaowanlu closed 6 months ago

gaowanlu commented 8 months ago
main thread: listen loop std::unorder_map<socket_object(ThreadID,Sockfd,statusFlag)*, connection_object*> mapping; MessageBox(ReadWriteCache)
            |
            | MutexFdQueue(main->worker,worker->main)
            | domainsock(main->worker)[Notify New Connection,fdQueue] (worker->main)[Notify Connection Close,fdQueue]
            | DataSender(main->worker)[Trigger worker loop, checking self MessageBox]
            |           (everywhere->main)[Trigger main loop, check self MessageBox, then (main->worker)]
            |
            |-----work thread loop(threadID), epoller(domainsock, client fd),checking new fd on every loop or domainsockTrigger. 
            |                                 | MessageBox(ReadWriteCache)
            |
            |-----work thread loop(threadID), epoller(domainsock, client fd),checking new fd on every loop or domainsockTrigger
            |                                 | MessageBox(ReadWriteCache)
            |
            |-----everywhere
gaowanlu commented 7 months ago

server socket accept all connections ,but just accepting once.