首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emscripten:不能在线程中使用emscripten::val

Emscripten:不能在线程中使用emscripten::val
EN

Stack Overflow用户
提问于 2022-04-22 03:04:47
回答 1查看 199关注 0票数 0

我正在做一个项目来附加来自c++的视频。

我成功地从c++创建了视频元素。

代码语言:javascript
复制
video = emscripten::val::global("document").call<emscripten::val>("createElement", emscripten::val("video"));
video.set("src", emscripten::val("http://jplayer.org/video/webm/Big_Buck_Bunny_Trailer.webm"));  
video.set("crossOrigin", emscripten::val("Anonymous"));
video.set("autoplay", emscripten::val(true));
video.call<void>("load");

但问题是,我必须等到视频缓冲区负载足够的时候才能播放。

我的解决方案是使用p线程创建线程,直到视频缓冲区加载到足够的程度,然后对视频进行处理。

代码语言:javascript
复制
 pthread_create(&threadVideo, NULL, attachVideo, NULL);

和内部的attachVideo函数

代码语言:javascript
复制
void *attachVideo(void *arg)
{
    pthread_detach(pthread_self());
    cout << "ready to run" << endl;
    cout << "readyState: " << video["readyState"].as<int>() << endl;
    pthread_exit(NULL);
}

当我运行它时,会出错:无法读取未定义的属性(读取'value')"

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-22 14:04:49

这是因为emscripten::val表示JS中的一个对象,JS状态都是本地线程。另一种说法是:每个线程获取的都是自己的JS环境,因此emscripten::val不能在线程之间共享。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71963029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档