On 01/21/13 15:31, Tony Rietwyk wrote: > >> Sent: Monday, 21 January 2013 11:32 PM >> >> Hi all. >> >> I have written a multi-threaded program (Qt 4.8.3) that executes QtScript >> code in multiple threads, each thread with its own QScriptEngine. The > script >> code is wrapped in QScriptProgram object. >> >> Is the same QScriptProgram object supposed to be usable in multiple script >> engines concurrently? If the answer is yes, I think I found a bug, because > it >> seems that this is not the case. (I'm happy to file a bug report then). If > the >> answer is no, the API documentation of QScriptProgram and QScriptEngine is >> misleading and should be updated. >> >> To find the root cause for the problem, I tried to analyze the threads > using >> Helgrind, and it spits out a lot of errors like the following: >> http://img145.imageshack.us/img145/9094/helgrind.png >> >> This seems to be consistent with what I see in the debugger: When my >> application crashes, at least one of the threads almost always is in the > control >> path of some JIT-related functions of the JS engine. >> >> Any thoughts would be welcome. >> >> -Christian > > Hi, > > I don't see anything in the 4.8.4 docs to suggest they can be shared between > threads. Even though they might be executing the same program script, I > think you'll need to create a separate one for each thread. > > Tony
Hi Tony. You are right, the docs don't explicitly state "QScriptProgram may be shared". However, QScriptEngine::evaluate() takes a constant reference to the QScriptProgram as an argument, so I was under the impression that it is used read-only and can thus be shared among multiple threads (that's what I meant with "misleading docs" in my first post). Anyway, thanks for your answer. -Christian
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest