@@ -109,13 +109,6 @@ enum class AE_ASYNC_OP
109109 CreateFileEvent,
110110};
111111
112- struct aeCommandControl
113- {
114- std::condition_variable cv;
115- std::atomic<int > rval;
116- std::mutex mutexcv;
117- };
118-
119112struct aeCommand
120113{
121114 AE_ASYNC_OP op;
@@ -128,7 +121,6 @@ struct aeCommand
128121 std::function<void ()> *pfn;
129122 };
130123 void *clientData;
131- aeCommandControl *pctl;
132124};
133125
134126void aeProcessCmd (aeEventLoop *eventLoop, int fd, void *, int )
@@ -149,19 +141,7 @@ void aeProcessCmd(aeEventLoop *eventLoop, int fd, void *, int )
149141 break ;
150142
151143 case AE_ASYNC_OP::CreateFileEvent:
152- {
153- if (cmd.pctl != nullptr )
154- {
155- cmd.pctl ->mutexcv .lock ();
156- std::atomic_store (&cmd.pctl ->rval , aeCreateFileEvent (eventLoop, cmd.fd , cmd.mask , cmd.fproc , cmd.clientData ));
157- cmd.pctl ->cv .notify_all ();
158- cmd.pctl ->mutexcv .unlock ();
159- }
160- else
161- {
162- aeCreateFileEvent (eventLoop, cmd.fd , cmd.mask , cmd.fproc , cmd.clientData );
163- }
164- }
144+ aeCreateFileEvent (eventLoop, cmd.fd , cmd.mask , cmd.fproc , cmd.clientData );
165145 break ;
166146
167147 case AE_ASYNC_OP::PostFunction:
@@ -175,19 +155,11 @@ void aeProcessCmd(aeEventLoop *eventLoop, int fd, void *, int )
175155
176156 case AE_ASYNC_OP::PostCppFunction:
177157 {
178- if (cmd.pctl != nullptr )
179- cmd.pctl ->mutexcv .lock ();
180-
181158 std::unique_lock<decltype (g_lock)> ulock (g_lock, std::defer_lock);
182159 if (cmd.fLock )
183160 ulock.lock ();
184161 (*cmd.pfn )();
185-
186- if (cmd.pctl != nullptr )
187- {
188- cmd.pctl ->cv .notify_all ();
189- cmd.pctl ->mutexcv .unlock ();
190- }
162+
191163 delete cmd.pfn ;
192164 }
193165 break ;
@@ -226,7 +198,7 @@ ssize_t safe_write(int fd, const void *pv, size_t cb)
226198}
227199
228200int aeCreateRemoteFileEvent (aeEventLoop *eventLoop, int fd, int mask,
229- aeFileProc *proc, void *clientData, int fSynchronous )
201+ aeFileProc *proc, void *clientData)
230202{
231203 if (eventLoop == g_eventLoopThisThread)
232204 return aeCreateFileEvent (eventLoop, fd, mask, proc, clientData);
@@ -239,13 +211,7 @@ int aeCreateRemoteFileEvent(aeEventLoop *eventLoop, int fd, int mask,
239211 cmd.mask = mask;
240212 cmd.fproc = proc;
241213 cmd.clientData = clientData;
242- cmd.pctl = nullptr ;
243214 cmd.fLock = true ;
244- if (fSynchronous )
245- {
246- cmd.pctl = new (MALLOC_LOCAL) aeCommandControl ();
247- cmd.pctl ->mutexcv .lock ();
248- }
249215
250216 auto size = safe_write (eventLoop->fdCmdWrite , &cmd, sizeof (cmd));
251217 if (size != sizeof (cmd))
@@ -254,16 +220,6 @@ int aeCreateRemoteFileEvent(aeEventLoop *eventLoop, int fd, int mask,
254220 serverAssert (errno == EAGAIN);
255221 ret = AE_ERR;
256222 }
257-
258- if (fSynchronous )
259- {
260- {
261- std::unique_lock<std::mutex> ulock (cmd.pctl ->mutexcv , std::adopt_lock);
262- cmd.pctl ->cv .wait (ulock);
263- ret = cmd.pctl ->rval ;
264- }
265- delete cmd.pctl ;
266- }
267223
268224 return ret;
269225}
@@ -286,7 +242,7 @@ int aePostFunction(aeEventLoop *eventLoop, aePostFunctionProc *proc, void *arg)
286242 return AE_OK;
287243}
288244
289- int aePostFunction (aeEventLoop *eventLoop, std::function<void ()> fn, bool fSynchronous, bool fLock, bool fForceQueue)
245+ int aePostFunction (aeEventLoop *eventLoop, std::function<void ()> fn, bool fLock, bool fForceQueue)
290246{
291247 if (eventLoop == g_eventLoopThisThread && !fForceQueue )
292248 {
@@ -297,13 +253,7 @@ int aePostFunction(aeEventLoop *eventLoop, std::function<void()> fn, bool fSynch
297253 aeCommand cmd = {};
298254 cmd.op = AE_ASYNC_OP::PostCppFunction;
299255 cmd.pfn = new (MALLOC_LOCAL) std::function<void ()>(fn);
300- cmd.pctl = nullptr ;
301256 cmd.fLock = fLock ;
302- if (fSynchronous )
303- {
304- cmd.pctl = new (MALLOC_LOCAL) aeCommandControl;
305- cmd.pctl ->mutexcv .lock ();
306- }
307257
308258 auto size = write (eventLoop->fdCmdWrite , &cmd, sizeof (cmd));
309259 if (!(!size || size == sizeof (cmd))) {
@@ -314,17 +264,7 @@ int aePostFunction(aeEventLoop *eventLoop, std::function<void()> fn, bool fSynch
314264 if (size == 0 )
315265 return AE_ERR;
316266
317- int ret = AE_OK;
318- if (fSynchronous )
319- {
320- {
321- std::unique_lock<std::mutex> ulock (cmd.pctl ->mutexcv , std::adopt_lock);
322- cmd.pctl ->cv .wait (ulock);
323- ret = cmd.pctl ->rval ;
324- }
325- delete cmd.pctl ;
326- }
327- return ret;
267+ return AE_OK;
328268}
329269
330270aeEventLoop *aeCreateEventLoop (int setsize) {
0 commit comments