Merge pull request #1422 from Barenboim/master

Optimize canceling timer.
This commit is contained in:
xiehan
2023-11-14 21:27:48 +08:00
committed by GitHub
2 changed files with 8 additions and 10 deletions

View File

@@ -1421,7 +1421,7 @@ int Communicator::create_poller(size_t poller_threads)
if ((ssize_t)params.max_open_files < 0)
return -1;
this->msgqueue = msgqueue_create(4096, sizeof (struct poller_result));
this->msgqueue = msgqueue_create(16 * 1024, sizeof (struct poller_result));
if (this->msgqueue)
{
params.context = this->msgqueue;

View File

@@ -1559,7 +1559,6 @@ int poller_add_timer(const struct timespec *value, void *context, void **timer,
int poller_del_timer(void *timer, poller_t *poller)
{
struct __poller_node *node = (struct __poller_node *)timer;
int stopped = 0;
pthread_mutex_lock(&poller->mutex);
if (!node->removed)
@@ -1570,12 +1569,6 @@ int poller_del_timer(void *timer, poller_t *poller)
__poller_tree_erase(node, poller);
else
list_del(&node->list);
node->error = 0;
node->state = PR_ST_DELETED;
stopped = poller->stopped;
if (!stopped)
write(poller->pipe_wr, &node, sizeof (void *));
}
else
{
@@ -1584,10 +1577,15 @@ int poller_del_timer(void *timer, poller_t *poller)
}
pthread_mutex_unlock(&poller->mutex);
if (stopped)
if (node)
{
node->error = 0;
node->state = PR_ST_DELETED;
poller->callback((struct poller_result *)node, poller->context);
return 0;
}
return -!node;
return -1;
}
void poller_stop(poller_t *poller)