1
0
Эх сурвалжийг харах

fixbug: multi-threads vector push_back

hewei.it 5 жил өмнө
parent
commit
a6e3172567

+ 3 - 0
http/server/HttpServer.cpp

@@ -17,6 +17,7 @@ static FileCache    s_filecache;
 
 struct HttpServerPrivdata {
     std::vector<hloop_t*>   loops;
+    std::mutex              loops_mutex;
 };
 
 static void on_recv(hio_t* io, void* _buf, int readbytes) {
@@ -279,7 +280,9 @@ static void worker_fn(void* userdata) {
     hevent_set_userdata(timer, &s_filecache);
     // for SDK implement http_server_stop
     HttpServerPrivdata* privdata = (HttpServerPrivdata*)server->privdata;
+    privdata->loops_mutex.lock();
     privdata->loops.push_back(loop);
+    privdata->loops_mutex.unlock();
     hloop_run(loop);
     hloop_free(&loop);
 }