- 主题:请问async signal safe 的函数里能否有条件的用vector?
申请内存咋了?new操作是thread-safe的。
你在别的线程中也同时操作这个vector?
--
FROM 221.222.173.*
知道了。我把thread safe和async signal safe搞混了
IEEE Std 1003.1 lists 118 reentrant UNIX(R) functions. The rest of the functions are non-reentrant because of any of the following:
They call malloc or free
They are known to use static data structures
They are part of the standard I/O library
感觉应该尽量不要依赖push_back()、emplace_back()的内部实现来保证reentrant,这些STL函数没有保证说一定不会去调用malloc/new。
【 在 fairfox 的大作中提到: 】
: malloc 不是 async signal safe的。不过可能仅限linux,其他系统不知道。
--
修改:z16166 FROM 221.222.173.*
FROM 221.222.173.*
应该是吧。sig handler、interrupt handler中都是尽可能少干活,把干活的代码移到外面来
【 在 hgoldfish 的大作中提到: 】
: signal handler 的最佳实践是不是修改一下标志位,然后 send(pipefd) 马上返回?
:
--
FROM 221.222.173.*