X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=urcu-call-rcu-impl.h;h=4e5879f381eadc8ebacd2efd079bfa588ac41c4b;hb=0b8ab7df078a6d8e1439b1db5849638892e1cc83;hp=cf65992f4e57a8bc86187744271c5ee4c58b6d26;hpb=5161f31e09ce33dd79afad8d08a2372fbf1c4fbe;p=urcu.git diff --git a/urcu-call-rcu-impl.h b/urcu-call-rcu-impl.h index cf65992..4e5879f 100644 --- a/urcu-call-rcu-impl.h +++ b/urcu-call-rcu-impl.h @@ -48,12 +48,13 @@ struct call_rcu_data { /* - * Align the tail on cache line size to eliminate false-sharing - * with head. + * We do not align head on a different cache-line than tail + * mainly because call_rcu callback-invocation threads use + * batching ("splice") to get an entire list of callbacks, which + * effectively empties the queue, and requires to touch the tail + * anyway. */ - struct cds_wfcq_tail __attribute__((aligned(CAA_CACHE_LINE_SIZE))) cbs_tail; - /* Alignment on cache line size will add padding here */ - + struct cds_wfcq_tail cbs_tail; struct cds_wfcq_head cbs_head; unsigned long flags; int32_t futex;