首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QtScript与线程

QtScript与线程
EN

Stack Overflow用户
提问于 2012-01-17 11:08:02
回答 2查看 1.6K关注 0票数 1

我想从QtScript脚本中运行几个并发作业:

代码语言:javascript
复制
function job1() { ... }
function job2() { ... }

runConcurrentJobs(job1, job2)

作业--本质上是一个远程过程调用序列(ZeroC Ice),需要在几个点进行同步。

Qt4.8.0文档没有提到QScriptEngine线程安全。我的问题:

  1. 使用单个QScriptEngine同时从多线程执行QtScript函数安全吗?
  2. ,您推荐什么方法来完成任务?

备注:

  1. 脚本不是由程序员编辑的,而是由电气工程师编辑的,我希望尽可能保持脚本的简洁和整洁。
EN

回答 2

Stack Overflow用户

发布于 2014-11-05 21:06:00

QScriptEngine被记录为“可重入者”,这意味着您可以使用多线程,但每个线程只能使用一个QScriptEngine

现在,如果函数job1()job2()完全可以同时运行,原则上应该可以将它们分离成两个不同的QScriptEngine(如果两个函数都不使用局部变量,那么就容易了,如果涉及全局,则更困难)。

  1. runConcurrentJobs()实现为C++中的Q_INVOKABLE函数(或插槽)。

void runConcurrently (const QString &functionname1,QString &functionname2) { MyScriptThread thread1 (functionname1);MyScriptThread thread2 (functionname2);thread1 1.start ();线程2.start ();线程1.WAIT();QString 2.WAIT();//可选地从线程获取返回值并返回}

  • ,其中MyScriptThread派生于QThread并实现了QThread::run(),大致如下:

common_script_code::run () { QScriptEngine engine;engine.evaluate (common_script_code);result = engine.evaluate ( the_threads_function );// the_threads_function作为QScriptProgram或QString }传递

票数 1
EN

Stack Overflow用户

发布于 2012-01-17 12:24:40

一般来说,如果文档没有提到线程处理,那么它就不是线程安全的。

  1. I会重写来使用异步请求。把他们都踢掉,然后等着他们俩。--
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8893571

复制
相关文章

相似问题

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