Yibo Cai created ARROW-7464:
-------------------------------

             Summary: [C++][util]: Refine CpuInfo singleton with std::call_once
                 Key: ARROW-7464
                 URL: https://issues.apache.org/jira/browse/ARROW-7464
             Project: Apache Arrow
          Issue Type: Improvement
          Components: C++
            Reporter: Yibo Cai
            Assignee: Yibo Cai


CpuInfo singleton is created and initialized on first invocation of
[CpuInfo::GetInstance()|https://github.com/apache/arrow/blob/master/cpp/src/arrow/util/cpu_info.cc#L188-L195].
 All calls afterwards return reference to the
same instance. Current code uses std::mutex to make sure that CpuInfo
is created only once, but it introduces unnecessary overhead for later
calls. Concurrent threads getting the created instance should not block
each other.

Replace std::mutex with std::call_once to fix this issue.

References:
[1] https://en.cppreference.com/w/cpp/thread/call_once
[2] http://www.modernescpp.com/index.php/thread-safe-initialization-of-data



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to