12 constexpr size_t shm_size = 1024 * 1024;
13 posix_shm shm(
"my_simulation_shm", shm_size);
15 std::cout <<
"Shared memory created/opened successfully\n";
19 constexpr size_t array_size = 100;
23 for (
size_t i = 0; i < 10; ++i) {
24 sensor_data[i] = 3.14 * i;
27 std::cout <<
"Written sensor data: ";
28 for (
size_t i = 0; i < 10; ++i) {
29 std::cout << sensor_data[i] <<
" ";
38 std::cout <<
"Discovered array size: " << discovered_array.
size() <<
"\n";
39 std::cout <<
"First value: " << discovered_array[0] <<
"\n";
44 struct SimulationMessage {
50 constexpr size_t queue_capacity = 50;
54 SimulationMessage msg1{1000, 42.5, 1};
55 SimulationMessage msg2{2000, 37.2, 2};
58 std::cout <<
"Message 1 enqueued successfully\n";
61 std::cout <<
"Message 2 enqueued successfully\n";
65 SimulationMessage received;
66 if (msg_queue.
dequeue(received)) {
67 std::cout <<
"Dequeued message - Timestamp: " << received.timestamp
68 <<
", Value: " << received.value
69 <<
", Sensor: " << received.sensor_id <<
"\n";
72 std::cout <<
"Queue size: " << msg_queue.
size() <<
"\n";
76 std::cout <<
"\nShared memory operations completed successfully!\n";
78 }
catch (
const std::exception& e) {
79 std::cerr <<
"Error: " << e.what() << std::endl;
Fixed-size array in shared memory with zero-overhead access.
size_t size() const noexcept
Get number of elements.
Lock-free circular queue for shared memory IPC.
size_t size() const noexcept
bool enqueue(const T &value) noexcept
Enqueue an element (lock-free)
std::optional< T > dequeue() noexcept
Dequeue an element (lock-free)
Core POSIX shared memory management with automatic reference counting.
Fixed-size shared memory array with STL compatibility.