bugfixed: common_blocked_queue_[alloc|free]_node must use lock
parent
22c7e31752
commit
1eb603cfd1
3
HISTORY
3
HISTORY
|
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
Version 1.64 2022-11-07
|
Version 1.64 2022-11-10
|
||||||
* shared_func.[hc]: normalize_path use type string_t for general purpose
|
* shared_func.[hc]: normalize_path use type string_t for general purpose
|
||||||
|
* bugfixed: common_blocked_queue_[alloc|free]_node must use lock
|
||||||
|
|
||||||
Version 1.63 2022-10-16
|
Version 1.63 2022-10-16
|
||||||
* sockopt.[hc]: getIpAndPort support ipv6
|
* sockopt.[hc]: getIpAndPort support ipv6
|
||||||
|
|
|
||||||
|
|
@ -97,14 +97,21 @@ static inline int common_blocked_queue_push(struct common_blocked_queue
|
||||||
static inline struct common_blocked_node *common_blocked_queue_alloc_node(
|
static inline struct common_blocked_node *common_blocked_queue_alloc_node(
|
||||||
struct common_blocked_queue *queue)
|
struct common_blocked_queue *queue)
|
||||||
{
|
{
|
||||||
return fast_mblock_alloc_object(&queue->mblock);
|
struct common_blocked_node *node;
|
||||||
|
|
||||||
|
pthread_mutex_lock(&(queue->lc_pair.lock));
|
||||||
|
node = fast_mblock_alloc_object(&queue->mblock);
|
||||||
|
pthread_mutex_unlock(&(queue->lc_pair.lock));
|
||||||
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void common_blocked_queue_free_node(
|
static inline void common_blocked_queue_free_node(
|
||||||
struct common_blocked_queue *queue,
|
struct common_blocked_queue *queue,
|
||||||
struct common_blocked_node *node)
|
struct common_blocked_node *node)
|
||||||
{
|
{
|
||||||
|
pthread_mutex_lock(&(queue->lc_pair.lock));
|
||||||
fast_mblock_free_object(&queue->mblock, node);
|
fast_mblock_free_object(&queue->mblock, node);
|
||||||
|
pthread_mutex_unlock(&(queue->lc_pair.lock));
|
||||||
}
|
}
|
||||||
|
|
||||||
void common_blocked_queue_push_chain_ex(struct common_blocked_queue *queue,
|
void common_blocked_queue_push_chain_ex(struct common_blocked_queue *queue,
|
||||||
|
|
@ -175,7 +182,7 @@ struct common_blocked_node *common_blocked_queue_pop_all_nodes_ex(
|
||||||
common_blocked_queue_pop_all_nodes_ex(queue, false)
|
common_blocked_queue_pop_all_nodes_ex(queue, false)
|
||||||
|
|
||||||
#define common_blocked_queue_free_one_node(queue, node) \
|
#define common_blocked_queue_free_one_node(queue, node) \
|
||||||
fast_mblock_free_object(&queue->mblock, node)
|
common_blocked_queue_free_node(&queue->mblock, node)
|
||||||
|
|
||||||
void common_blocked_queue_free_all_nodes(struct common_blocked_queue *queue,
|
void common_blocked_queue_free_all_nodes(struct common_blocked_queue *queue,
|
||||||
struct common_blocked_node *node);
|
struct common_blocked_node *node);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue