有没有办法确定JavaScript中可用的CPU核心数量,以便您可以根据具体情况调整Web工作者的数量?
请考虑以下代码以及此Mozilla教程"使用Web worker"中的说明:
var myWorker = new Worker('my_worker.js');
myWorker.onmessage = function(event) {
print("Called back by the worker!\n");
};
Run Code Online (Sandbox Code Playgroud)
此示例中的第1行创建并开始运行工作线程. 第2行将worker的onmessage处理程序设置为当worker调用自己的postMessage()函数时调用的函数.
线程在调用Worker构造函数时启动.我想知道在设置onmessage处理程序时是否存在竞争条件.例如,如果Web工作者在设置onmessage之前发布消息.
有人知道更多吗?
更新:
Andrey指出,Web工作者应该在收到消息时开始工作,就像Mozilla教程中的Fibonacci示例一样.但是,这不会在Web工作者中设置onmessage处理程序时创建新的竞争条件吗?
例如:
主要脚本:
var myWorker = new Worker('worker.js');
myWorker.onmessage = function(evt) {..};
myWorker.postMessage('start');
Run Code Online (Sandbox Code Playgroud)
Web worker脚本('worker.js')
var result = [];
onmessage = function(evt) {..};
Run Code Online (Sandbox Code Playgroud)
然后考虑以下执行路径:
main thread web worker
var worker = new Worker("worker.js");
var result = [];
myWorker.onmessage = ..
myWorker.postMessage('start');
onmessage = ..
Run Code Online (Sandbox Code Playgroud)
可以省略" var result = [] …
我注意到我的传单标记在给定的经/纬度上“不固定”。当我放大地图时,标记会移动以进行调整并采取正确的位置。当我缩小时,它会转到另一个位置。位置不是一成不变的。我怎样才能解决这个问题 ?
我的标记笔没有什么特别的。以下是我的建造方式
var LeafIcon = L.Icon.extend({
options: {
iconSize: [12, 15],
shadowSize: [30, 40],
iconAnchor: [11, 70],
shadowAnchor: [2, 42],
popupAnchor: [-3, -40]
}
});
var map_icon = new LeafIcon({iconUrl: 'icon_marker.png'});
var marker;
marker = L.marker([my_lat, my_lon], {icon: map_icon});
marker.addTo(map);
marker.bindPopup("My markers' popup");
Run Code Online (Sandbox Code Playgroud) javascript ×2
web-worker ×2
cpu-cores ×1
debugging ×1
google-wave ×1
html5 ×1
leaflet ×1
testing ×1