Кэширование ссылок актера в массиве

Я новичок в CAF, и я хотел бы создать, скажем, 10 000 актеров, кэшировать их в массив и отправлять им сообщения. Очень простой

Создайте их:

actor ventureBN_actor[numOfRuns];
for(int i = 0; i < numOfRuns; i++) {
        ventureBN_actor[i] = system.spawn(ventureBN_net);
}

Отправлять сообщения

for(int i = 0; i < numOfRuns; i++) {
    system.spawn(hello_net, ventureBN_actor[i], i);
}

hello_net выглядит так:

void hello_net(event_based_actor* self, const actor& buddy, const int index) {
    self->request(buddy, std::chrono::seconds(10), index).then(
            // ... wait up to 10s for a response ...
            [=](const string& what) {
                // ... and print it
                aout(self) << what << endl;
            }
    );
}

Фактически код является обновленной копией исходного примера Hello World.

Когда у меня numOfRuns = 1000, иногда я получаю сообщение об ошибке:

* Ошибка в `./ClassesAndObjects': двойное освобождение или повреждение (fasttop): 0x00007fca20009d40 * ======= Backtrace: ========= /lib/x86_64-linux-gnu/libc.so. 6 (+ 0x777e5) [0x7fca2dac17e5] /lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7fca2daca37a] /lib/x86_64-linux-gnu/libc.so.6(cfree+0x4ccaace00x3ccaace00c53dca0 ] ./ClassesAndObjects[0x5c3bc8] ./ClassesAndObjects[0x41b394] ./ClassesAndObjects[0x40fbdd] /usr/local/lib/libcaf_core.so.0.15.6(_ZN3caf6detail13behavior_impl6invokeERNS0_21invoke_result_visitorERNS_17type_erased_tupleE+0x4f)[0x7fca2e9ead3f] / USR / местные / Библиотека /libcaf_core.so.0.15.6(_ZN3caf15scheduled_actor7consumeERNS_15mailbox_elementE+0x38d)[0x7fca2ea35f7d] /usr/local/lib/libcaf_core.so.0.15.6(_ZN3caf15scheduled_actor10reactivateERNS_15mailbox_elementE+0x26)[0x7fca2ea348e6] /usr/local/lib/libcaf_core.so.0.15.6(_ZN3caf15scheduled_actor6resumeEPNS_14execution_unitEm+0xde)[0x7fca2ea34b8e] /usr/local/lib/libcaf_core.so.0.15.6(_ZNSt6thread5_ImplISt12_Bind_simpleinSigner2SignSignSignerFW3S3S1 k_stealingEE5startEvEUlvE_vEEE6_M_runEv+0x26f)[0x7fca2e9d7bff] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb8c80) причем ] /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fca2db5141d] ======= Карта памяти: ======== 00400000-00775000 r-xp 00000000 08: 01 4852897
/ home / mbaffa / C++ Проекты /ClassesAndObjects/cmake-build-release/ClassesAndObjects 00974000-0097f000 r - p 00374000 08:01 4852897
/ home / mbaffa / C++ Проекты / Классы AndObjects / cmake-build-release / ClassesAndObjects 0097f000-00983000 rw-p 0037f000 08:01 4852897
/ home / mbaffa / C++ Проекты /ClassesAndObjects/cmake-build-release/ClassesAndObjects 00983000-00989000 rw-p 00000000 00:00 0 00a53000-00c74000 rw-p 00000000 00:00 0 [куча] 7fca0c000000-7fca0c021000 rw-p 00000000 000:00 0 7fca0c021000-7fca10000000 ---p 00000000 00:00 0 7fca14000000-7fca14021000 rw-p 00000000 00:00 0 7fca14021000-7fca18000000 ---p 00000000 00:00 0 7fca18000000-7fca18021000 rw-p 00000000 00:00 0 7fca18021000-7fca1c000000 ---p 00000000 00:00 0 7fca1c000000-7fca1c021000 rw-p 00000000 00:00 0 7fca1c021000-7fca20000000 ---p 00000000 00:00 0 7fca20000000-7fca20021000 rw-p 00000000 00000000ffcaca ---p 00000000 00:00 0 7fca24000000-7fca24021000 rw-p 00000000 00:00 0 7fca24021000-7fca28000000 ---p 00000000 00:00 0 7fca2aa44000-7fca2aa45000 ---p 00000000 00:00 0 7fca2aa45000-7fca2b245000 rw-p 00000000 00:00 0 7fca2b245000-7fca2b246000 ---p 00000000 00:00 0 7fca2b246000-7fca2ba46000 rw-p 00000000 00:00 0 7fca2ba46000-7fca2ba47000 ---p 00000000 00:00 0 7fca2ba47000-7fca2c247000 rw-p 00000000 00:00 0 7fca2c247000-7fca2c248000 ---p 00000000 00:00 0 7fca2c248000-7fca2ca48000 rw-p 00000000 00:00 0 7fca2ca48000-7fca2ca49000 ---p 00000000 00:00 0 7fca2ca24000000 00000000 00:00 0 7fca2d249000-7fca2d24a000 --- p 00000000 00:00 0 7fca2d24a000-7fca2da4a000 rw-p 00000000 00:00 0 7fca2da4a000-7fca2dc0a000 r-xp 00000000 08:01 38666720
/lib/x86_64-linux-gnu/libc-2.23.so 7fca2dc0a000-7fca2de0a000 --- p 001c0000 08:01 38666720
/lib/x86_64-linux-gnu/libc-2.23.so 7fca2de0a000-7fca2de0e000 r - p 001c0000 08:01 38666720
/lib/x86_64-linux-gnu/libc-2.23.so 7fca2de0e000-7fca2de10000 rw-p 001c4000 08:01 38666720
/lib/x86_64-linux-gnu/libc-2.23.so 7fca2de10000-7fca2de14000 rw-p 00000000 00:00 0 7fca2de14000-7fca2de2c000 r-xp 00000000 08:01 38666718 /lib/x86_64-linux-gnu/libsox.2.2 7fca2de2c000-7fca2e02b000 --- p 00018000 08:01 38666718
/lib/x86_64-linux-gnu/libpthread-2.23.so 7fca2e02b000-7fca2e02c000 r - p 00017000 08:01 38666718
/lib/x86_64-linux-gnu/libpthread-2.23.so 7fca2e02c000-7fca2e02d000 rw-p 00018000 08:01 38666718
/lib/x86_64-linux-gnu/libpthread-2.23.so 7fca2e02d000-7fca2e031000 rw-p 00000000 00:00 0 7fca2e031000-7fca2e047000 r-xp 00000000 08:01 38670775 /lib/x86_64-linuxggns./ 7fca2e047000-7fca2e246000 --- p 00016000 08:01 38670775
/lib/x86_64-linux-gnu/libgcc_s.so.1 7fca2e246000-7fca2e247000 rw-p 00015000 08:01 38670775
/lib/x86_64-linux-gnu/libgcc_s.so.1 7fca2e247000-7fca2e34f000 r-xp 00000000 08:01 38666331
/lib/x86_64-linux-gnu/libm-2.23.so 7fca2e34f000-7fca2e54e000 --- p 00108000 08:01 38666331
/lib/x86_64-linux-gnu/libm-2.23.so 7fca2e54e000-7fca2e54f000 r - p 00107000 08:01 38666331
/lib/x86_64-linux-gnu/libm-2.23.so 7fca2e54f000-7fca2e550000 rw-p 00108000 08:01 38666331
/lib/x86_64-linux-gnu/libm-2.23.so 7fca2e550000-7fca2e6c2000 r-xp 00000000 08:01 18874760
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 7fca2e6c2000-7fca2e8c2000 --- p 00172000 08:01 18874760
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 7fca2e8c2000-7fca2e8cc000 r - p 00172000 08:01 18874760
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 7fca2e8cc000-7fca2e8ce000 rw-p 0017c000 08:01 18874760
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 7fca2e8ce000-7fca2e8d2000 rw-p 00000000 00:00 0 7fca2e8d2000-7fca2ea9d000 r-xp 00000000 08:01 19410425
/usr/local/lib/libcaf_core.so.0.15.6 7fca2ea9d000-7fca2ec9d000 --- p 001cb000 08:01 19410425
/usr/local/lib/libcaf_core.so.0.15.6 7fca2ec9d000-7fca2ecaa000 r - p 001cb000 08:01 19410425
/usr/local/lib/libcaf_core.so.0.15.6 7fca2ecaa000-7fca2ecad000 rw-p 001d8000 08:01 19410425
/usr/local/lib/libcaf_core.so.0.15.6 7fca2ecad000-7fca2ecd3000 r-xp 00000000 08:01 38666333
/lib/x86_64-linux-gnu/ld-2.23.so 7fca2eea9000-7fca2eeaf000 rw-p 00000000 00:00 0 7fca2eed0000-7fca2eed2000 rw-p 00000000 00:00 0 7fca2eed2000-7fca2eed3000 r - p 00025633 08:01
/lib/x86_64-linux-gnu/ld-2.23.so 7fca2eed3000-7fca2eed4000 rw-p 00026000 08:01 38666333
/lib/x86_64-linux-gnu/ld-2.23.so 7fca2eed4000-7fca2eed5000 rw-p 00000000 00:00 0 7ffcfc98c000-7ffcfc9ae000 rw-p 00000000 00:00 0
[стек] 7ffcfc9ef000-7ffcfc9f2000 r - p 00000000 00:00 0
[vvar] 7ffcfc9f2000-7ffcfc9f4000 r-xp 00000000 00:00 0
[vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
[Vsyscall]

Если у меня будет 100 актеров, все будет хорошо. Вопрос в том, что htop говорит, что я использую менее половины доступной памяти. Ядра достигают 100%, но память в порядке.

Если это проблема распределения, я хотел бы заметить, есть ли код ошибки, который говорит мне, что

В чем может быть настоящая проблема?

Спасибо

0 ответов

Другие вопросы по тегам