Skip to content

Commit 9652d8d

Browse files
Clean project up.
1 parent c1b3f56 commit 9652d8d

File tree

12 files changed

+390
-388
lines changed

12 files changed

+390
-388
lines changed

Diff for: .gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
## Ignore Visual Studio temporary files, build results, and
22
## files generated by popular Visual Studio add-ons.
33

4-
Build/
4+
[Bb]uild/
55

66
# User-specific files
77
*.suo

Diff for: Example/Benchmark/Source/main.cpp

+42-42
Original file line numberDiff line numberDiff line change
@@ -9,56 +9,56 @@
99

1010
int main()
1111
{
12-
constexpr static std::size_t RingSize = 4096;
13-
using RingBufferType = Iyp::WaitFreeRingBufferUtilities::RingBuffer<std::size_t,
14-
Iyp::WaitFreeRingBufferUtilities::AccessRequirements::MULTI_CONSUMER |
15-
Iyp::WaitFreeRingBufferUtilities::AccessRequirements::MULTI_PRODUCER,
16-
RingSize>;
17-
constexpr std::size_t PushCount = 4096 * RingSize;
18-
constexpr std::size_t NumberOfPusherThreads = 4;
19-
constexpr std::size_t NumberOfPopperThreads = 4;
12+
constexpr static std::size_t RingSize = 4096;
13+
using RingBufferType = Iyp::WaitFreeRingBufferUtilities::RingBuffer<std::size_t,
14+
Iyp::WaitFreeRingBufferUtilities::AccessRequirements::MULTI_CONSUMER |
15+
Iyp::WaitFreeRingBufferUtilities::AccessRequirements::MULTI_PRODUCER,
16+
RingSize>;
17+
constexpr std::size_t PushCount = 4096 * RingSize;
18+
constexpr std::size_t NumberOfPusherThreads = 4;
19+
constexpr std::size_t NumberOfPopperThreads = 4;
2020

21-
std::vector<std::thread> pushers;
22-
std::vector<std::thread> poppers;
23-
RingBufferType ring;
21+
std::vector<std::thread> pushers;
22+
std::vector<std::thread> poppers;
23+
RingBufferType ring;
2424

25-
for (std::size_t thread_number = 0; thread_number < NumberOfPopperThreads; thread_number++)
26-
{
27-
poppers.emplace_back([&ring, PushCount, NumberOfPusherThreads, NumberOfPopperThreads]() {
28-
for (std::size_t i = 0; i < PushCount * NumberOfPusherThreads / NumberOfPopperThreads; i++)
29-
while (!ring.pop())
30-
{
31-
}
32-
});
33-
}
25+
for (std::size_t thread_number = 0; thread_number < NumberOfPopperThreads; thread_number++)
26+
{
27+
poppers.emplace_back([&ring, PushCount, NumberOfPusherThreads, NumberOfPopperThreads]() {
28+
for (std::size_t i = 0; i < PushCount * NumberOfPusherThreads / NumberOfPopperThreads; i++)
29+
while (!ring.pop())
30+
{
31+
}
32+
});
33+
}
3434

35-
std::atomic<bool> do_push;
35+
std::atomic<bool> do_push;
3636

37-
for (std::size_t thread_number = 0; thread_number < NumberOfPusherThreads; thread_number++)
38-
{
39-
pushers.emplace_back([&ring, &do_push, PushCount]() mutable {
40-
while (!do_push.load(std::memory_order_relaxed))
41-
{
42-
}
37+
for (std::size_t thread_number = 0; thread_number < NumberOfPusherThreads; thread_number++)
38+
{
39+
pushers.emplace_back([&ring, &do_push, PushCount]() mutable {
40+
while (!do_push.load(std::memory_order_relaxed))
41+
{
42+
}
4343

44-
for (std::size_t i = 0; i < PushCount; i++)
45-
while (!ring.push(i))
46-
{
47-
}
48-
});
49-
}
44+
for (std::size_t i = 0; i < PushCount; i++)
45+
while (!ring.push(i))
46+
{
47+
}
48+
});
49+
}
5050

51-
const auto start_time = std::chrono::steady_clock::now();
52-
do_push.store(true, std::memory_order_relaxed);
51+
const auto start_time = std::chrono::steady_clock::now();
52+
do_push.store(true, std::memory_order_relaxed);
5353

54-
for (auto &popper : poppers)
55-
popper.join();
54+
for (auto &popper : poppers)
55+
popper.join();
5656

57-
const auto end_time = std::chrono::steady_clock::now();
57+
const auto end_time = std::chrono::steady_clock::now();
5858

59-
std::cout << "Processed " << PushCount * NumberOfPusherThreads << " elements in ";
60-
std::cout << std::chrono::nanoseconds{end_time - start_time}.count() << " nano-seconds." << std::endl;
59+
std::cout << "Processed " << PushCount * NumberOfPusherThreads << " elements in ";
60+
std::cout << std::chrono::nanoseconds{end_time - start_time}.count() << " nano-seconds." << std::endl;
6161

62-
for (auto &pusher : pushers)
63-
pusher.join();
62+
for (auto &pusher : pushers)
63+
pusher.join();
6464
}

Diff for: Projects/CMake/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ set(REPO_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..)
44
set(CMAKE_PROJECT_ROOT ${REPO_ROOT}/Projects/CMake)
55

66
if(WIN32)
7-
set(LOCAL_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/Include)
7+
set(INCLUDE_FOLDER_NAME Include)
88
else()
9-
set(LOCAL_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include)
9+
set(INCLUDE_FOLDER_NAME include)
1010
endif()
1111

1212
set(CMAKE_CXX_STANDARD 11)

Diff for: Projects/CMake/Example/Benchmark/CMakeLists.txt

+8-8
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ find_package(Threads REQUIRED)
66
target_link_libraries(${PROJECT_NAME} WaitFreeRingBufferUtilities Threads::Threads)
77

88
if(WIN32)
9-
install(TARGETS ${PROJECT_NAME}
10-
LIBRARY DESTINATION Lib
11-
RUNTIME DESTINATION Bin
12-
ARCHIVE DESTINATION Lib)
9+
install(TARGETS ${PROJECT_NAME}
10+
LIBRARY DESTINATION Lib
11+
RUNTIME DESTINATION Bin
12+
ARCHIVE DESTINATION Lib)
1313
else()
14-
install(TARGETS ${PROJECT_NAME}
15-
LIBRARY DESTINATION lib
16-
RUNTIME DESTINATION bin
17-
ARCHIVE DESTINATION lib)
14+
install(TARGETS ${PROJECT_NAME}
15+
LIBRARY DESTINATION lib
16+
RUNTIME DESTINATION bin
17+
ARCHIVE DESTINATION lib)
1818
endif()

Diff for: Projects/CMake/Test/CMakeLists.txt

+10-10
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,18 @@ find_package(Threads REQUIRED)
99
target_link_libraries(${PROJECT_NAME} gtest gtest_main WaitFreeRingBufferUtilities Threads::Threads)
1010

1111
if (MSVC)
12-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
13-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
12+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
13+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
1414
endif()
1515

1616
if(WIN32)
17-
install(TARGETS ${PROJECT_NAME}
18-
LIBRARY DESTINATION Lib
19-
RUNTIME DESTINATION Bin
20-
ARCHIVE DESTINATION Lib)
17+
install(TARGETS ${PROJECT_NAME}
18+
LIBRARY DESTINATION Lib
19+
RUNTIME DESTINATION Bin
20+
ARCHIVE DESTINATION Lib)
2121
else()
22-
install(TARGETS ${PROJECT_NAME}
23-
LIBRARY DESTINATION lib
24-
RUNTIME DESTINATION bin
25-
ARCHIVE DESTINATION lib)
22+
install(TARGETS ${PROJECT_NAME}
23+
LIBRARY DESTINATION lib
24+
RUNTIME DESTINATION bin
25+
ARCHIVE DESTINATION lib)
2626
endif()
+6-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
project(WaitFreeRingBufferUtilities)
22

3+
set(LOCAL_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${INCLUDE_FOLDER_NAME})
4+
35
add_custom_target(${PROJECT_NAME}_HEADERS ALL
4-
${CMAKE_COMMAND} -E make_directory ${LOCAL_INCLUDE_DIR}/Iyp/${PROJECT_NAME}
5-
COMMAND ${CMAKE_COMMAND} -E copy_directory ${REPO_ROOT}/${PROJECT_NAME}/Include/ ${LOCAL_INCLUDE_DIR}/Iyp/${PROJECT_NAME})
6+
${CMAKE_COMMAND} -E make_directory ${LOCAL_INCLUDE_DIR}/Iyp/${PROJECT_NAME}
7+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${REPO_ROOT}/${PROJECT_NAME}/Include/ ${LOCAL_INCLUDE_DIR}/Iyp/${PROJECT_NAME})
68

79
add_library(${PROJECT_NAME} INTERFACE)
810
target_include_directories(${PROJECT_NAME} INTERFACE ${LOCAL_INCLUDE_DIR})
911
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_HEADERS)
1012
target_link_libraries(${PROJECT_NAME} INTERFACE Boost::optional)
1113

1214
if(WIN32)
13-
install(DIRECTORY ${REPO_ROOT}/${PROJECT_NAME}/Include/ DESTINATION Include/Iyp/${PROJECT_NAME})
15+
install(DIRECTORY ${REPO_ROOT}/${PROJECT_NAME}/Include/ DESTINATION Include/Iyp/${PROJECT_NAME})
1416
else()
15-
install(DIRECTORY ${REPO_ROOT}/${PROJECT_NAME}/Include/ DESTINATION include/Iyp/${PROJECT_NAME})
17+
install(DIRECTORY ${REPO_ROOT}/${PROJECT_NAME}/Include/ DESTINATION include/Iyp/${PROJECT_NAME})
1618
endif()

Diff for: Test/Source/cache-aligned-and-padded-object-test.cpp

+41-41
Original file line numberDiff line numberDiff line change
@@ -8,71 +8,71 @@ namespace CacheAlignedAndPaddedObjectTest
88
template <std::size_t Alignment, std::size_t Size>
99
struct alignas(Alignment) SizableAlignableObject
1010
{
11-
std::uint8_t padding[Size];
11+
std::uint8_t padding[Size];
1212
};
1313

1414
TEST(CacheAlignedAndPaddedObjectTest, UnalignedWithUndevisableSizeObject)
1515
{
16-
constexpr std::size_t Alignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT / 2;
17-
constexpr std::size_t Size = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE / 2;
16+
constexpr std::size_t Alignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT / 2;
17+
constexpr std::size_t Size = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE / 2;
1818

19-
using UnalignedWithUndevisableSizeObjectType = SizableAlignableObject<Alignment, Size>;
20-
EXPECT_EQ(Alignment, alignof(UnalignedWithUndevisableSizeObjectType));
21-
EXPECT_EQ(Size, sizeof(UnalignedWithUndevisableSizeObjectType));
19+
using UnalignedWithUndevisableSizeObjectType = SizableAlignableObject<Alignment, Size>;
20+
EXPECT_EQ(Alignment, alignof(UnalignedWithUndevisableSizeObjectType));
21+
EXPECT_EQ(Size, sizeof(UnalignedWithUndevisableSizeObjectType));
2222

23-
constexpr std::size_t ExpectedAlignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT;
24-
constexpr std::size_t ExpectedSize = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE;
25-
using CacheAlignedAndPaddedObjectType = Iyp::WaitFreeRingBufferUtilities::Details::CacheAlignedAndPaddedObject<UnalignedWithUndevisableSizeObjectType>;
26-
EXPECT_EQ(ExpectedAlignment, alignof(CacheAlignedAndPaddedObjectType));
27-
EXPECT_EQ(ExpectedSize, sizeof(CacheAlignedAndPaddedObjectType));
23+
constexpr std::size_t ExpectedAlignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT;
24+
constexpr std::size_t ExpectedSize = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE;
25+
using CacheAlignedAndPaddedObjectType = Iyp::WaitFreeRingBufferUtilities::Details::CacheAlignedAndPaddedObject<UnalignedWithUndevisableSizeObjectType>;
26+
EXPECT_EQ(ExpectedAlignment, alignof(CacheAlignedAndPaddedObjectType));
27+
EXPECT_EQ(ExpectedSize, sizeof(CacheAlignedAndPaddedObjectType));
2828
}
2929

3030
TEST(CacheAlignedAndPaddedObjectTest, UnalignedWithDevisableSizeObject)
3131
{
32-
constexpr std::size_t Alignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT / 2;
33-
constexpr std::size_t Size = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE * 3;
32+
constexpr std::size_t Alignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT / 2;
33+
constexpr std::size_t Size = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE * 3;
3434

35-
using UnalignedWithUndevisableSizeObjectType = SizableAlignableObject<Alignment, Size>;
36-
EXPECT_EQ(Alignment, alignof(UnalignedWithUndevisableSizeObjectType));
37-
EXPECT_EQ(Size, sizeof(UnalignedWithUndevisableSizeObjectType));
35+
using UnalignedWithUndevisableSizeObjectType = SizableAlignableObject<Alignment, Size>;
36+
EXPECT_EQ(Alignment, alignof(UnalignedWithUndevisableSizeObjectType));
37+
EXPECT_EQ(Size, sizeof(UnalignedWithUndevisableSizeObjectType));
3838

39-
constexpr std::size_t ExpectedAlignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT;
40-
constexpr std::size_t ExpectedSize = Size;
41-
using CacheAlignedAndPaddedObjectType = Iyp::WaitFreeRingBufferUtilities::Details::CacheAlignedAndPaddedObject<UnalignedWithUndevisableSizeObjectType>;
42-
EXPECT_EQ(ExpectedAlignment, alignof(CacheAlignedAndPaddedObjectType));
43-
EXPECT_EQ(ExpectedSize, sizeof(CacheAlignedAndPaddedObjectType));
39+
constexpr std::size_t ExpectedAlignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT;
40+
constexpr std::size_t ExpectedSize = Size;
41+
using CacheAlignedAndPaddedObjectType = Iyp::WaitFreeRingBufferUtilities::Details::CacheAlignedAndPaddedObject<UnalignedWithUndevisableSizeObjectType>;
42+
EXPECT_EQ(ExpectedAlignment, alignof(CacheAlignedAndPaddedObjectType));
43+
EXPECT_EQ(ExpectedSize, sizeof(CacheAlignedAndPaddedObjectType));
4444
}
4545

4646
TEST(CacheAlignedAndPaddedObjectTest, DISABLED_AlignedWithUndevisableSizeObject)
4747
{
48-
constexpr std::size_t Alignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT;
49-
constexpr std::size_t Size = (Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE / 2) * 3;
48+
constexpr std::size_t Alignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT;
49+
constexpr std::size_t Size = (Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE / 2) * 3;
5050

51-
using UnalignedWithUndevisableSizeObjectType = SizableAlignableObject<Alignment, Size>;
52-
EXPECT_EQ(Alignment, alignof(UnalignedWithUndevisableSizeObjectType));
53-
EXPECT_EQ(Size, sizeof(UnalignedWithUndevisableSizeObjectType));
51+
using UnalignedWithUndevisableSizeObjectType = SizableAlignableObject<Alignment, Size>;
52+
EXPECT_EQ(Alignment, alignof(UnalignedWithUndevisableSizeObjectType));
53+
EXPECT_EQ(Size, sizeof(UnalignedWithUndevisableSizeObjectType));
5454

55-
constexpr std::size_t ExpectedAlignment = Alignment;
56-
constexpr std::size_t ExpectedSize = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE * 2;
57-
using CacheAlignedAndPaddedObjectType = Iyp::WaitFreeRingBufferUtilities::Details::CacheAlignedAndPaddedObject<UnalignedWithUndevisableSizeObjectType>;
58-
EXPECT_EQ(ExpectedAlignment, alignof(CacheAlignedAndPaddedObjectType));
59-
EXPECT_EQ(ExpectedSize, sizeof(CacheAlignedAndPaddedObjectType));
55+
constexpr std::size_t ExpectedAlignment = Alignment;
56+
constexpr std::size_t ExpectedSize = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE * 2;
57+
using CacheAlignedAndPaddedObjectType = Iyp::WaitFreeRingBufferUtilities::Details::CacheAlignedAndPaddedObject<UnalignedWithUndevisableSizeObjectType>;
58+
EXPECT_EQ(ExpectedAlignment, alignof(CacheAlignedAndPaddedObjectType));
59+
EXPECT_EQ(ExpectedSize, sizeof(CacheAlignedAndPaddedObjectType));
6060
}
6161

6262
TEST(CacheAlignedAndPaddedObjectTest, AlignedWithDevisableSizeObject)
6363
{
64-
constexpr std::size_t Alignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT;
65-
constexpr std::size_t Size = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE * 3;
64+
constexpr std::size_t Alignment = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_ALIGNMENT;
65+
constexpr std::size_t Size = Iyp::WaitFreeRingBufferUtilities::Details::CACHE_LINE_SIZE * 3;
6666

67-
using UnalignedWithUndevisableSizeObjectType = SizableAlignableObject<Alignment, Size>;
68-
EXPECT_EQ(Alignment, alignof(UnalignedWithUndevisableSizeObjectType));
69-
EXPECT_EQ(Size, sizeof(UnalignedWithUndevisableSizeObjectType));
67+
using UnalignedWithUndevisableSizeObjectType = SizableAlignableObject<Alignment, Size>;
68+
EXPECT_EQ(Alignment, alignof(UnalignedWithUndevisableSizeObjectType));
69+
EXPECT_EQ(Size, sizeof(UnalignedWithUndevisableSizeObjectType));
7070

71-
constexpr std::size_t ExpectedAlignment = Alignment;
72-
constexpr std::size_t ExpectedSize = Size;
73-
using CacheAlignedAndPaddedObjectType = Iyp::WaitFreeRingBufferUtilities::Details::CacheAlignedAndPaddedObject<UnalignedWithUndevisableSizeObjectType>;
74-
EXPECT_EQ(ExpectedAlignment, alignof(CacheAlignedAndPaddedObjectType));
75-
EXPECT_EQ(ExpectedSize, sizeof(CacheAlignedAndPaddedObjectType));
71+
constexpr std::size_t ExpectedAlignment = Alignment;
72+
constexpr std::size_t ExpectedSize = Size;
73+
using CacheAlignedAndPaddedObjectType = Iyp::WaitFreeRingBufferUtilities::Details::CacheAlignedAndPaddedObject<UnalignedWithUndevisableSizeObjectType>;
74+
EXPECT_EQ(ExpectedAlignment, alignof(CacheAlignedAndPaddedObjectType));
75+
EXPECT_EQ(ExpectedSize, sizeof(CacheAlignedAndPaddedObjectType));
7676
}
7777
} // namespace CacheAlignedAndPaddedObjectTest
7878
} // namespace Iyp

0 commit comments

Comments
 (0)