![]() |
1
4
不,这是错误的,会导致数据竞争,这总是未定义的行为。
为了证明这种未定义的行为是如何合理地表现出来的:编译器可能会看到
在信号处理程序中,您保证能够使用定义的行为访问的唯一非局部变量是(非线程局部)
此外,默认情况下,库函数在信号处理程序中使用也不安全。C/C++/POSIX标准中只有特定的例外。明确地
请参阅 https://en.cppreference.com/w/cpp/utility/program/signal 因为C++标准对信号处理程序施加了要求,以便它们根据标准具有定义良好的行为。 看看 https://pubs.opengroup.org/onlinepubs/9799919799/functions/V2_chap02.html#tag_16_04_03 对于列表 异步信号安全 POSIX环境中的函数。 |
![]() |
Christopher · 从角度信号中删除未定义的结果 1 年前 |
|
elfilado · 基于信号值分配Observable 1 年前 |
![]() |
Shay · `waitpid`一个已经被waitpid'处理的进程 2 年前 |