根据APUE 2e第12.5章:
如果函数对于多个线程是可重入的,我们说它是线程安全的.但是,这并没有告诉我们该函数是否可以在信号处理程序中重入.我们说可以安全地从异步信号处理程序重新输入的函数是异步信号安全的.
我的问题是
Q1:
是否存在"一般可重入"概念(这意味着在所有情况下都可以重新进入)?如果有的话,一般的重入是否只相当于多线程和异步信号的重入?或者在谈论一般重入时,是否还需要考虑第三个条件?
Q2:
线程安全并不意味着异步信号安全,这是显而易见的.但是,异步信号安全是否意味着线程安全?我搜索了很多,人们说它确实如此,但我找不到它的任何来源.
Q3:
如果Q1和Q2的答案都是肯定的,我猜一般重入是否等于异步信号安全?
假设我们在web.xml中有一个名为dispatcher的servlet的3个url模式:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/aaa/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/bbb/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/ccc/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
和控制器方法:
@RequestMapping(value = "/xxx", method = RequestMethod.POST)
public String foo() {}
Run Code Online (Sandbox Code Playgroud)
由于@RequestMapping中的路径值不包含servlet路径,因此用户请求时
/aaa/xxx
/bbb/xxx
/ccc/xxx
Run Code Online (Sandbox Code Playgroud)
请求将全部映射到方法foo.
我认为如果网站非常复杂,这可能会导致潜在的问题.这是Spring Web MVC的一个缺陷还是我误解了什么?
既然参数e是int,为什么不回归int64?这有什么特别的原因吗?