diff --git a/examples/bench_client/bench_client.vcxproj.user b/examples/bench_client/bench_client.vcxproj.user index b85e17e5584bdc5ba5ad094521bafe34bf4dfadd..da1888048c361a4cea7d69f36e61d8095b190089 100644 --- a/examples/bench_client/bench_client.vcxproj.user +++ b/examples/bench_client/bench_client.vcxproj.user @@ -4,4 +4,8 @@ <LocalDebuggerCommandArguments>192.168.1.166 12345 6 6000 50</LocalDebuggerCommandArguments> <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <LocalDebuggerCommandArguments>192.168.1.166 12345 6 6000 50</LocalDebuggerCommandArguments> + <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> + </PropertyGroup> </Project> \ No newline at end of file diff --git a/examples/server_demo_libevent/server_demo_libevent.cpp b/examples/server_demo_libevent/server_demo_libevent.cpp index 6e4497cf3a59358c79cb9e13192874000faec9da..44e782ca0de7fab3eb6c9423da93c35576d79550 100644 --- a/examples/server_demo_libevent/server_demo_libevent.cpp +++ b/examples/server_demo_libevent/server_demo_libevent.cpp @@ -246,6 +246,7 @@ void readcb(struct bufferevent* bev, void* user_data) { auto input = bufferevent_get_input(bev); auto context = (ThreadContext*)user_data; + std::lock_guard<std::mutex> lg(context->mutex); while (1) { size_t len = evbuffer_get_length(input); @@ -304,6 +305,7 @@ void accept_cb(evconnlistener* listener, evutil_socket_t fd, sockaddr* addr, int static int worker_id = 0; auto context = worker_thread_contexts[worker_id]; + std::lock_guard<std::mutex> lg(context->mutex); auto bev = bufferevent_socket_new(context->base, fd, BEV_OPT_CLOSE_ON_FREE); if (!bev) { fprintf(stderr, "Error constructing bufferevent!\n"); @@ -314,11 +316,7 @@ void accept_cb(evconnlistener* listener, evutil_socket_t fd, sockaddr* addr, int Client client; client.fd = (int)fd; client.output = bufferevent_get_output(bev); - - { - std::lock_guard<std::mutex> lg(context->mutex); - context->clients[(int)fd] = client; - } + context->clients[(int)fd] = client; bufferevent_setcb(bev, readcb, nullptr, eventcb, context); bufferevent_enable(bev, EV_WRITE | EV_READ); @@ -442,8 +440,10 @@ int main(int argc, char** argv) })); } - init_listener_thread(sin); - std::thread listener_thread([]() { event_base_dispatch(listen_thread_evbase); }); + std::thread listener_thread([&sin]() { + init_listener_thread(sin); + event_base_dispatch(listen_thread_evbase); + }); op_usage();