add func sf_nio_add_to_deleted_list

replication_quorum
YuQing 2022-06-25 09:21:02 +08:00
parent 8824c35975
commit dfc58be3ec
2 changed files with 18 additions and 3 deletions

View File

@ -22,6 +22,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "fastcommon/fast_task_queue.h" #include "fastcommon/fast_task_queue.h"
#include "fastcommon/ioevent_loop.h"
#include "sf_define.h" #include "sf_define.h"
#include "sf_types.h" #include "sf_types.h"
@ -99,6 +100,16 @@ static inline bool sf_client_sock_in_read_stage(struct fast_task_info *task)
return (task->event.callback == (IOEventCallback)sf_client_sock_read); return (task->event.callback == (IOEventCallback)sf_client_sock_read);
} }
static inline void sf_nio_add_to_deleted_list(struct nio_thread_data
*thread_data, struct fast_task_info *task)
{
if (task->thread_data == thread_data) {
ioevent_add_to_deleted_list(task);
} else {
sf_nio_notify(task, SF_NIO_STAGE_CLOSE);
}
}
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -204,11 +204,14 @@ int sf_service_init_ex2(SFContext *sf_context, const char *name,
return result; return result;
} }
if ((result=init_pthread_lock(&thread_data->waiting_queue.lock)) != 0) { if ((result=init_pthread_lock(&thread_data->
waiting_queue.lock)) != 0)
{
return result; return result;
} }
#if defined(OS_LINUX) #if defined(OS_LINUX)
FC_NOTIFY_READ_FD(thread_data) = eventfd(0, EFD_NONBLOCK); FC_NOTIFY_READ_FD(thread_data) = eventfd(0,
EFD_NONBLOCK | EFD_CLOEXEC);
if (FC_NOTIFY_READ_FD(thread_data) < 0) { if (FC_NOTIFY_READ_FD(thread_data) < 0) {
result = errno != 0 ? errno : EPERM; result = errno != 0 ? errno : EPERM;
logError("file: "__FILE__", line: %d, " logError("file: "__FILE__", line: %d, "
@ -228,10 +231,11 @@ int sf_service_init_ex2(SFContext *sf_context, const char *name,
break; break;
} }
if ((result=fd_add_flags(FC_NOTIFY_READ_FD(thread_data), if ((result=fd_add_flags(FC_NOTIFY_READ_FD(thread_data),
O_NONBLOCK)) != 0) O_NONBLOCK | FD_CLOEXEC)) != 0)
{ {
break; break;
} }
fd_set_cloexec(FC_NOTIFY_WRITE_FD(thread_data));
#endif #endif
thread_ctx->sf_context = sf_context; thread_ctx->sf_context = sf_context;