木头云

Results 136 comments of 木头云

我查了下,posix里只有`pthread_cond_timedwait`可以用`CLOCK_MONOTONIC`,`pthread_mutex_timedlock`就不行了;win上`WaitForSingleObject`也有同样的问题,想解决似乎很麻烦([https://github.com/microsoft/STL/issues/718](https://github.com/microsoft/STL/issues/718))。 一个简单的做法是在调试的时候把`def.h`里的默认超时改成`-1`: ```c++ enum : std::uint32_t { invalid_value = (std::numeric_limits::max)(), default_timeout = 100, // ms }; ```

What is your use case like?

你指的是给大块消息用的对象池吗?这个在clear的时候不是释放了嘛?

我原本的设计是不释放的,因为这里的内存池是给所有链路使用的,而不是一条。如果你在这里清理的话,其他链路上正在跑的消息会出问题的。 你如果比较在意这里,可能需要把全局的池改成这个handle自己的池。

ipc::route 机制有点差别,可能有bug。我有空看下咋回事

是的,因为连接是假的。我打算重构的时候用一些别的方式来做,比如用一个socket做连接;或者干脆抛弃连接的概念……

奇怪,我测试了下是正常的 ![image](https://github.com/mutouyun/cpp-ipc/assets/6309961/6ecfd683-3470-4024-b3b2-ca3b763040a5) 你的崩溃指的是不是没有办法用任何`signal`捕获做退出清理?这种情况下确实是不支持的。 重启恢复倒是有办法,直接执行类似`sudo rm -rf /dev/shm/__IPC_SHM___*`这样的语句就可以了,需要注意的是确保所有route或channel进程都不存在。