Skip to content

Commit 2f5e7c6

Browse files
committed
1 parent 117d03a commit 2f5e7c6

File tree

16 files changed

+76
-138
lines changed

16 files changed

+76
-138
lines changed

cpp/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -768,12 +768,14 @@ endif()
768768
set(ARROW_SHARED_PRIVATE_LINK_LIBS
769769
${ARROW_STATIC_LINK_LIBS}
770770
${BOOST_SYSTEM_LIBRARY}
771+
${BOOST_THREAD_LIBRARY}
771772
${BOOST_FILESYSTEM_LIBRARY}
772773
${BOOST_REGEX_LIBRARY})
773774

774775
list(APPEND
775776
ARROW_STATIC_LINK_LIBS
776777
${BOOST_SYSTEM_LIBRARY}
778+
${BOOST_THREAD_LIBRARY}
777779
${BOOST_FILESYSTEM_LIBRARY}
778780
${BOOST_REGEX_LIBRARY})
779781

@@ -792,6 +794,11 @@ if (NOT MSVC)
792794
${CMAKE_DL_LIBS})
793795
endif()
794796

797+
if (UNIX AND NOT APPLE)
798+
set(ARROW_LINK_LIBS ${ARROW_LINK_LIBS} -lrt)
799+
set(ARROW_STATIC_LINK_LIBS ${ARROW_STATIC_LINK_LIBS} -lrt)
800+
endif()
801+
795802
set(ARROW_TEST_STATIC_LINK_LIBS
796803
arrow_testing_static
797804
arrow_static
@@ -805,6 +812,7 @@ set(ARROW_TEST_SHARED_LINK_LIBS
805812
${ARROW_LINK_LIBS}
806813
double-conversion_static
807814
${BOOST_SYSTEM_LIBRARY}
815+
${BOOST_THREAD_LIBRARY}
808816
${BOOST_FILESYSTEM_LIBRARY}
809817
${BOOST_REGEX_LIBRARY}
810818
gtest_main_static

cpp/cmake_modules/ThirdpartyToolchain.cmake

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -369,11 +369,14 @@ if (ARROW_BOOST_VENDORED)
369369
set(BOOST_BUILD_LINK "static")
370370
set(BOOST_STATIC_SYSTEM_LIBRARY
371371
"${BOOST_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_system${CMAKE_STATIC_LIBRARY_SUFFIX}")
372+
set(BOOST_STATIC_THREAD_LIBRARY
373+
"${BOOST_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_thread${CMAKE_STATIC_LIBRARY_SUFFIX}")
372374
set(BOOST_STATIC_FILESYSTEM_LIBRARY
373375
"${BOOST_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_filesystem${CMAKE_STATIC_LIBRARY_SUFFIX}")
374376
set(BOOST_STATIC_REGEX_LIBRARY
375377
"${BOOST_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_regex${CMAKE_STATIC_LIBRARY_SUFFIX}")
376378
set(BOOST_SYSTEM_LIBRARY boost_system_static)
379+
set(BOOST_THREAD_LIBRARY boost_thread_static)
377380
set(BOOST_FILESYSTEM_LIBRARY boost_filesystem_static)
378381
set(BOOST_REGEX_LIBRARY boost_regex_static)
379382

@@ -384,12 +387,13 @@ if (ARROW_BOOST_VENDORED)
384387
else()
385388
set(BOOST_BUILD_PRODUCTS
386389
${BOOST_STATIC_SYSTEM_LIBRARY}
390+
${BOOST_STATIC_THREAD_LIBRARY}
387391
${BOOST_STATIC_FILESYSTEM_LIBRARY}
388392
${BOOST_STATIC_REGEX_LIBRARY})
389393
set(BOOST_CONFIGURE_COMMAND
390394
"./bootstrap.sh"
391395
"--prefix=${BOOST_PREFIX}"
392-
"--with-libraries=filesystem,regex,system")
396+
"--with-libraries=filesystem,regex,system,thread")
393397
if ("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
394398
set(BOOST_BUILD_VARIANT "debug")
395399
else()
@@ -436,17 +440,20 @@ else()
436440
if (ARROW_BOOST_HEADER_ONLY)
437441
find_package(Boost REQUIRED)
438442
else()
439-
find_package(Boost COMPONENTS regex system filesystem REQUIRED)
443+
find_package(Boost COMPONENTS regex system thread filesystem REQUIRED)
440444
if ("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
441445
set(BOOST_SHARED_SYSTEM_LIBRARY ${Boost_SYSTEM_LIBRARY_DEBUG})
446+
set(BOOST_SHARED_THREAD_LIBRARY ${Boost_THREAD_LIBRARY_DEBUG})
442447
set(BOOST_SHARED_FILESYSTEM_LIBRARY ${Boost_FILESYSTEM_LIBRARY_DEBUG})
443448
set(BOOST_SHARED_REGEX_LIBRARY ${Boost_REGEX_LIBRARY_DEBUG})
444449
else()
445450
set(BOOST_SHARED_SYSTEM_LIBRARY ${Boost_SYSTEM_LIBRARY_RELEASE})
451+
set(BOOST_SHARED_THREAD_LIBRARY ${Boost_THREAD_LIBRARY_RELEASE})
446452
set(BOOST_SHARED_FILESYSTEM_LIBRARY ${Boost_FILESYSTEM_LIBRARY_RELEASE})
447453
set(BOOST_SHARED_REGEX_LIBRARY ${Boost_REGEX_LIBRARY_RELEASE})
448454
endif()
449455
set(BOOST_SYSTEM_LIBRARY boost_system_shared)
456+
set(BOOST_THREAD_LIBRARY boost_thread_shared)
450457
set(BOOST_FILESYSTEM_LIBRARY boost_filesystem_shared)
451458
set(BOOST_REGEX_LIBRARY boost_regex_shared)
452459
endif()
@@ -457,17 +464,20 @@ else()
457464
if (ARROW_BOOST_HEADER_ONLY)
458465
find_package(Boost REQUIRED)
459466
else()
460-
find_package(Boost COMPONENTS regex system filesystem REQUIRED)
467+
find_package(Boost COMPONENTS regex system thread atomic chrono date_time filesystem REQUIRED)
461468
if ("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
462469
set(BOOST_STATIC_SYSTEM_LIBRARY ${Boost_SYSTEM_LIBRARY_DEBUG})
470+
set(BOOST_STATIC_THREAD_LIBRARY ${Boost_THREAD_LIBRARY_DEBUG})
463471
set(BOOST_STATIC_FILESYSTEM_LIBRARY ${Boost_FILESYSTEM_LIBRARY_DEBUG})
464472
set(BOOST_STATIC_REGEX_LIBRARY ${Boost_REGEX_LIBRARY_DEBUG})
465473
else()
466474
set(BOOST_STATIC_SYSTEM_LIBRARY ${Boost_SYSTEM_LIBRARY_RELEASE})
475+
set(BOOST_STATIC_THREAD_LIBRARY ${Boost_THREAD_LIBRARY_RELEASE})
467476
set(BOOST_STATIC_FILESYSTEM_LIBRARY ${Boost_FILESYSTEM_LIBRARY_RELEASE})
468477
set(BOOST_STATIC_REGEX_LIBRARY ${Boost_REGEX_LIBRARY_RELEASE})
469478
endif()
470479
set(BOOST_SYSTEM_LIBRARY boost_system_static)
480+
set(BOOST_THREAD_LIBRARY boost_thread_static)
471481
set(BOOST_FILESYSTEM_LIBRARY boost_filesystem_static)
472482
set(BOOST_REGEX_LIBRARY boost_regex_static)
473483
endif()
@@ -482,6 +492,10 @@ if (NOT ARROW_BOOST_HEADER_ONLY)
482492
STATIC_LIB "${BOOST_STATIC_SYSTEM_LIBRARY}"
483493
SHARED_LIB "${BOOST_SHARED_SYSTEM_LIBRARY}")
484494

495+
ADD_THIRDPARTY_LIB(boost_thread
496+
STATIC_LIB "${BOOST_STATIC_THREAD_LIBRARY}"
497+
SHARED_LIB "${BOOST_SHARED_THREAD_LIBRARY}")
498+
485499
ADD_THIRDPARTY_LIB(boost_filesystem
486500
STATIC_LIB "${BOOST_STATIC_FILESYSTEM_LIBRARY}"
487501
SHARED_LIB "${BOOST_SHARED_FILESYSTEM_LIBRARY}")
@@ -490,7 +504,7 @@ if (NOT ARROW_BOOST_HEADER_ONLY)
490504
STATIC_LIB "${BOOST_STATIC_REGEX_LIBRARY}"
491505
SHARED_LIB "${BOOST_SHARED_REGEX_LIBRARY}")
492506

493-
SET(ARROW_BOOST_LIBS ${BOOST_SYSTEM_LIBRARY} ${BOOST_FILESYSTEM_LIBRARY})
507+
SET(ARROW_BOOST_LIBS ${BOOST_SYSTEM_LIBRARY} ${BOOST_THREAD_LIBRARY} ${BOOST_FILESYSTEM_LIBRARY})
494508
endif()
495509

496510
include_directories(SYSTEM ${Boost_INCLUDE_DIR})

cpp/src/arrow/flight/flight-benchmark.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ Status RunPerformanceTest(const int port) {
146146

147147
std::shared_ptr<ThreadPool> pool;
148148
RETURN_NOT_OK(ThreadPool::Make(FLAGS_num_threads, &pool));
149-
std::vector<std::future<Status>> tasks;
149+
std::vector<Future<Status>> tasks;
150150
for (const auto& endpoint : plan->endpoints()) {
151151
tasks.emplace_back(pool->Submit(ConsumeStream, endpoint));
152152
}

cpp/src/arrow/python/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ endif()
5555
set(ARROW_PYTHON_SHARED_LINK_LIBS
5656
arrow_shared
5757
${PYTHON_OTHER_LIBS}
58+
${BOOST_THREAD_LIBRARY}
59+
${Boost_SYSTEM_LIBRARY}
5860
)
5961

6062
if (WIN32)

cpp/src/arrow/util/memory.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void parallel_memcopy(uint8_t* dst, const uint8_t* src, int64_t nbytes,
6060
// Each thread gets a "chunk" of k blocks.
6161

6262
// Start all parallel memcpy tasks and handle leftovers while threads run.
63-
std::vector<std::future<void*>> futures;
63+
std::vector<Future<void*>> futures;
6464

6565
for (int i = 0; i < num_threads; i++) {
6666
futures.emplace_back(pool->Submit(wrap_memcpy, dst + prefix + i * chunk_size,

cpp/src/arrow/util/parallel.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ namespace internal {
3535
template <class FUNCTION>
3636
Status ParallelFor(int num_tasks, FUNCTION&& func) {
3737
auto pool = internal::GetCpuThreadPool();
38-
std::vector<std::future<Status>> futures(num_tasks);
39-
38+
std::vector<Future<Status>> futures(num_tasks);
4039
for (int i = 0; i < num_tasks; ++i) {
4140
futures[i] = pool->Submit(func, i);
4241
}

cpp/src/arrow/util/thread-pool.h

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,19 @@
3333
#include <type_traits>
3434
#include <utility>
3535

36+
#define BOOST_THREAD_PROVIDES_FUTURE
37+
#include <boost/thread.hpp>
38+
#include <boost/thread/future.hpp>
39+
3640
#include "arrow/status.h"
3741
#include "arrow/util/macros.h"
3842
#include "arrow/util/visibility.h"
3943

4044
namespace arrow {
4145

46+
template<class R>
47+
using Future = boost::future<R>;
48+
4249
/// \brief Get the capacity of the global thread pool
4350
///
4451
/// Return the number of worker threads in the thread pool to which
@@ -64,12 +71,10 @@ namespace detail {
6471
// to std::function.
6572
template <typename R, typename... Args>
6673
struct packaged_task_wrapper {
67-
using PackagedTask = std::packaged_task<R(Args...)>;
68-
69-
explicit packaged_task_wrapper(PackagedTask&& task)
74+
using PackagedTask = boost::packaged_task<R>;
75+
explicit packaged_task_wrapper(PackagedTask&& task)
7076
: task_(std::make_shared<PackagedTask>(std::forward<PackagedTask>(task))) {}
71-
72-
void operator()(Args&&... args) { return (*task_)(std::forward<Args>(args)...); }
77+
void operator()(Args&&... args) { return (*task_)(std::forward<Args>(args)...); }
7378
std::shared_ptr<PackagedTask> task_;
7479
};
7580

@@ -118,10 +123,10 @@ class ARROW_EXPORT ThreadPool {
118123
// only occurs if the ThreadPool is shutting down).
119124
template <typename Function, typename... Args,
120125
typename Result = typename std::result_of<Function && (Args && ...)>::type>
121-
std::future<Result> Submit(Function&& func, Args&&... args) {
126+
Future<Result> Submit(Function&& func, Args&&... args) {
122127
// Trying to templatize std::packaged_task with Function doesn't seem
123128
// to work, so go through std::bind to simplify the packaged signature
124-
using PackagedTask = std::packaged_task<Result()>;
129+
using PackagedTask = boost::packaged_task<Result>;
125130
auto task = PackagedTask(std::bind(std::forward<Function>(func), args...));
126131
auto fut = task.get_future();
127132

cpp/src/arrow/util/utf8.cc

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
#include <mutex>
1919

20+
#include <boost/thread.hpp>
21+
#include <boost/thread/future.hpp>
22+
2023
#include "arrow/util/logging.h"
2124
#include "arrow/util/utf8.h"
2225

@@ -73,10 +76,10 @@ ARROW_EXPORT void CheckUTF8Initialized() {
7376

7477
} // namespace internal
7578

76-
static std::once_flag utf8_initialized;
79+
static boost::once_flag utf8_initialized = BOOST_ONCE_INIT;
7780

7881
void InitializeUTF8() {
79-
std::call_once(utf8_initialized, internal::InitializeLargeTable);
82+
boost::call_once(internal::InitializeLargeTable, utf8_initialized);
8083
}
8184

8285
} // namespace util

cpp/src/parquet/arrow/reader.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ using arrow::BooleanArray;
5353
using arrow::ChunkedArray;
5454
using arrow::Column;
5555
using arrow::Field;
56+
using arrow::Future;
5657
using arrow::Int32Array;
5758
using arrow::ListArray;
5859
using arrow::MemoryPool;
@@ -504,7 +505,7 @@ Status FileReader::Impl::ReadRowGroup(int row_group_index,
504505
};
505506

506507
if (use_threads_) {
507-
std::vector<std::future<Status>> futures;
508+
std::vector<Future<Status>> futures;
508509
auto pool = ::arrow::internal::GetCpuThreadPool();
509510
for (int i = 0; i < num_columns; i++) {
510511
futures.push_back(pool->Submit(ReadColumnFunc, i));
@@ -551,7 +552,7 @@ Status FileReader::Impl::ReadTable(const std::vector<int>& indices,
551552
};
552553

553554
if (use_threads_) {
554-
std::vector<std::future<Status>> futures;
555+
std::vector<Future<Status>> futures;
555556
auto pool = ::arrow::internal::GetCpuThreadPool();
556557
for (int i = 0; i < num_fields; i++) {
557558
futures.push_back(pool->Submit(ReadColumnFunc, i));

cpp/src/plasma/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ set(PLASMA_SRCS
7979
protocol.cc
8080
thirdparty/ae/ae.c)
8181

82-
set(PLASMA_LINK_LIBS arrow_shared)
83-
set(PLASMA_STATIC_LINK_LIBS arrow_static)
82+
set(PLASMA_LINK_LIBS ${ARROW_LINK_LIBS} ${BOOST_THREAD_LIBRARY} arrow_shared)
83+
set(PLASMA_STATIC_LINK_LIBS ${ARROW_STATIC_LINK_LIBS} ${BOOST_THREAD_LIBRARY} arrow_static)
8484

8585
if (ARROW_CUDA)
8686
set(PLASMA_LINK_LIBS ${PLASMA_LINK_LIBS} arrow_cuda_shared)

0 commit comments

Comments
 (0)