wi->nr_threads is protected by wi->startup_lock now, we can make the critical section in queue_work() smaller.
Signed-off-by: Hitoshi Mitake <[email protected]> --- lib/work.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/work.c b/lib/work.c index a71f139..f261e2d 100644 --- a/lib/work.c +++ b/lib/work.c @@ -222,12 +222,12 @@ void queue_work(struct work_queue *q, struct work *work) struct worker_info *wi = container_of(q, struct worker_info, q); uatomic_inc(&wi->nr_workers); - pthread_mutex_lock(&wi->pending_lock); if (wq_need_grow(wi)) /* double the thread pool size */ create_worker_threads(wi, wi->nr_threads * 2); + pthread_mutex_lock(&wi->pending_lock); list_add_tail(&work->w_list, &wi->q.pending_list); pthread_mutex_unlock(&wi->pending_lock); -- 1.8.1.2 -- sheepdog mailing list [email protected] http://lists.wpkg.org/mailman/listinfo/sheepdog
