我刚进入HTML5 webworkers,现在我想将多个参数传递给我的工作者.
我在我的页面中有这个:
var username = document.getElementById("username").value;
var server_url = 'localhost';
w.postMessage(username,server_url);
Run Code Online (Sandbox Code Playgroud)
这在我的工人身上:
var username = '';
var server_url = '';
onmessage = function (e,f) {
username = e.data;
server_url = f.data;
}
console.log(username);
console.log(server_url);
Run Code Online (Sandbox Code Playgroud)
当我打开它在浏览器中调用worker的页面时:
Uncaught TypeError: Failed to execute 'postMessage' on 'Worker': The 2nd argument is neither an array, nor does it have indexed properties.
所有我想做的是有username和server_url获取传递给我知道的例子我存的是工人server_url,但在真正的脚本,它是动态的.
请不要只说:改变这一点,做到这一点,但为我提供代码,以便我可以看到它应该如何完成,而不是仍然不得不自己解决.
我想生成一个随机数,哈希,与SHA256我的GPU使用OpenCL与此基本代码(而不是散列那些预先给定的纯文本,它散列随机数)。
我让所有的散列都在我的 GPU 上工作,但有一个问题:
使用 OpenCL 时,每秒完成的散列数量会降低吗?
是的,您没听错,目前仅使用 CPU 比仅使用 GPU 更快。
我的 GPU 仅~10%在我的 CPU 运行时运行~100%
我的问题是:这怎么可能,更重要的是,我该如何解决?
这是我用于生成 a 的代码Pseudo-Random Number(在两次运行之间根本不会改变):
long Miner::Rand() {
std::mt19937 rng;
// initialize the random number generator with time-dependent seed
uint64_t timeSeed = std::chrono::high_resolution_clock::now().time_since_epoch().count();
std::seed_seq ss{ uint32_t(timeSeed & 0xffffffff), uint32_t(timeSeed >> 32) };
rng.seed(ss);
// initialize a uniform distribution between 0 and 1
std::uniform_real_distribution<double> unif(0, 1);
double rnd = unif(rng);
return floor(99999999 * …Run Code Online (Sandbox Code Playgroud)