我正在使用最新版本的 iframe-resizer/react 来自动调整 iframe 的高度和宽度。每当我对内容做出反应时,我都会收到运行时错误 -VM2860:1
我正在使用最新版本的 iframe-resizer/react 来自动调整 iframe 的高度和宽度。每当我对内容做出反应时,我都会收到运行时错误,指出 -VM2860:1 未捕获的语法错误:意外的令牌“s”,\'scroll-to-top\' 不是有效的 JSON
我不知道这是从哪里来的。我检查了 iframe 中发生的事件。那里也没有提到 scroll-to-top 这个东西。
下面是我编写的代码片段。请帮我解决这个问题。
import IFrameResizer from "@iframe-resizer/react";
<IFrameResizer
src={iframeSrc}
license="GPLv3"
className="iframe-dialog"
title="Iframe Dialog"
onLoad={onLoad}
scrolling={false}
forwardRef={iframeRef}
style={{
width: "100%",
border: "none",
opacity: "100",
height: "100vh",
}}
/>
我已尝试使用 iframe-resizer/react 中提供的 onResized、onMessage 处理程序来获取消息,但仍然没有任何反应。
Stack Overflow 上有几个问题解释了为什么在 Python 中访问全局变量不是线程安全的,即使存在全局解释器锁。原因是
Stack Overflow 上有几个问题解释了为什么即使存在全局解释器锁,在 Python 中访问全局变量也不是线程安全的。
原因是 GIL 只允许一个 Python 解释器实例在任何时候执行字节码。但是,由于对内存中数据的许多操作都由多个字节码操作组成(它们不是原子的),如果两个线程切换,其中一个停止运行而另一个恢复运行,则这种情况可能发生在内存中的状态和解释器的状态在同步点不一致的情况下。(想想“竞争条件”。)
如果以上陈述不是很清楚,这个网站上有一些很好的解释。 下面就是一个例子。
然而,与此直接相反的是,人们经常说 GIL 的目的是通过防止竞争条件来简化多线程编程。 下面就是一个例子。 ( 但这可能是 - 而且在我看来 - 一种常见的误解或误解 )
但是,这并不是一个足够详细的解释,因为尽管全局变量没有受到竞争条件保护,但出于上述原因, 有些变量是受到保护的 ,这通常被认为是常识。
那么 - 为什么访问“非全局”(“某些”)变量可以保证是线程安全的?或者更好的是, 在什么条件下访问变量可以保证是线程安全的?
一个相对容易理解的例子是局部变量:由于每个函数调用都有自己独立的堆栈框架和一组局部变量,因此显然一个线程不能在局部变量的上下文中与另一个线程产生竞争条件,因为局部变量的生存期仅限于函数调用的生存期。
换句话说,如果分派多个线程,并且 my_function
该函数调用生命周期内创建的任何变量的入口点都独立于并行运行的所有其他线程。
作为这个想法的扩展,如果将对(本地或其他)变量的引用传递到同时执行的多个函数中,则不能 保证 是线程安全的,因为两个或多个线程在内存中持有对同一对象的引用。 (这本质上与全局变量示例非常相似。)
还有其他例子吗?或者这两个例子足以解释必须考虑的一系列可能性吗?