最近,我一直在寻找一个用于线程并发任务的库。理想情况下,是一个在线程上调用函数的简单接口。任何时候都有 n 个线程,有些线程完成得比其他线程快,并且到达的时间不同。
首先我在尝试 Rx,它在 C++ 中很棒。我还研究了 Blocks 和 TBB,但它们都依赖于平台。对于我的原型,我需要保持平台独立,因为我们还不知道它将在什么上运行,并且可以在做出决定时进行更改。
C++11 有很多关于线程和并发的东西,我发现了很多类似线程池的例子。
https://github.com/bilash/threadpool
类似的项目对 std::thread 和 std::mutex 使用相同的 lambda 表达式。
这看起来非常适合我的需要。有一些问题。池以定义数量的线程启动,任务将排队,直到线程空闲。
如何添加新线程?删除过期的线程?(。加入()??)
显然,这对于已知数量的线程要容易得多,因为它们可以在 ctor 中初始化,然后在 dtor 中 join()。
有 C++ 并发经验的人在这里有什么提示或指示吗?
我正在尝试使用 model.json 加载 Tensorflowjs 模型,该模型是内存浏览器端对象。
https://js.tensorflow.org/api/latest/#loadLayersModel
一种方法可能是从虚拟 fetch 方法返回 json。
fetchFunc (Function) 用于覆盖 window.fetch 函数的函数。
或者,也可以创建自定义 IOHandler,但关于此的文档很少。
一个 tf.io.IOHandler 对象,它用它的 load 方法加载模型工件。
有谁知道如何使用 tensorflow 加载方法来实现这一点?
var modelJson = "{...ModelAndWeightsConfig}";
//Do something here to load it.
var newModel = tf.loadLayersModel("/model_0/model.json", {
onProgress: onProgressCallback}).then(model =>{});
Run Code Online (Sandbox Code Playgroud)
问候,
我正在尝试卸载阻止我的 UI 的长时间运行的进程。
WebWorker 方法似乎是解决这种情况的最佳方法。
但是,我需要使用的库之一具有 async/await。
WebWorker 具有有限的 JS API,并且似乎没有 async/await。
有没有办法在 WebWorker 中使用 Promises?
错误
参考错误:__awaiter 未定义
问候,
丹尼尔
更新:
添加 __awaiter 导致无法识别 Promise。
var __awaiter =
(this && this.__awaiter) ||
function(thisArg, _arguments, Promise, generator) {
return new Promise(function(resolve, reject) {
generator = generator.call(thisArg, _arguments);
function cast(value) {
return value instanceof Promise && value.constructor === Promise
? value
: new Promise(function(resolve) {
resolve(value);
});
}
function onfulfill(value) {
try {
step('next', value);
} catch (e) {
reject(e);
} …Run Code Online (Sandbox Code Playgroud)