实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
在现代的CPU中,为了性能优化(优化发生在CPU和Complier两个阶段),会对内存的操作(loads and stores)顺序进行重排序(reordering of memory operations),这样就导致了乱序执行(out-of-order execution) 换一句话,代码的编写顺序(program order)和实际内存的访问顺序(order of memory operations),不一定是一致的。 在单线程的环境下,乱序执行(out of order execution)并不会影响结果,因为即便方法内的内存读写操作是out of order execution,但方法与方法的调用顺序是一致的,可以保证结果的正确性。 但在多线程环境下,多个线程共享同一块内存,且并发执行,那么out of order execution可能会影响程序的行为,产生无法预期的结果。 所以,很明显,多线程环境下,我们要去解决这种可能产生”无法预期“结果的情况。 在开始之前,先举一个例子说明,在多线程环境下,out of order execution,会引起哪些问题?