Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8025885
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 4, 20262026-06-04T23:18:43+00:00 2026-06-04T23:18:43+00:00

I would like to know if DWScript is capable of using threads inside of

  • 0

I would like to know if DWScript is capable of using threads inside of scripts, as some engines do not synchronize access to it’s internal data structures.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-04T23:18:46+00:00Added an answer on June 4, 2026 at 11:18 pm

    Arnaud gave the key points:

    • each compiler instance can only be invoked from one thread at a time. You can have multiple compiler instances invoked in multiple threads at the same time, and a particular compiler instance can be used from multiple threads, provided only one thread uses it a time.
    • each compiled program can have multiple executions, each execution can be running in its own thread. Also a particular execution can be used by several threads, provided only one thread uses it at a time.
    • each executions has its own space for its variables, and its own stack, object instances are on the heap and can technically be shared across executions, there is no locking mechanism for that, but you could make your own.
    • the script engine does not perform any synchronization or locking when using classes or functions exposed to it (be it via TdwsUnit, RTTI, etc.), so when running script executions in threads, make sure you only exposed thread-safe stuff (be particularly careful about that for RTTI, since lot of the RTL & VCL is not thread-safe to begin with)

    Running multiple executions of a script is similar to having multiple threads in Delphi, though each new execution has not only its own stack (like Delphi threads) but also its own variable space (in Delphi it would be a bit like if you had “thread var” everywhere). And DWScript executions don’t have to be in their own thread, they can be moved across threads, or polled and used in a lower number of threads (the only limitation being that each execution is used by only one thread at a time, as mentioned above).

    So nothing prevents you from exposing a function that would spawn a thread (and corresponding execution) in a script function, but communication across the executions wouldn’t be via shared variables (like you could be tempted to do in Delphi), but would have to go through your own exposed functions (or external variables), return values (using an “evaluate” approach, cf. the unit tests), “shared” object instances, or “global vars”.

    By “global vars”, I mean the functions defined in dwsGlobalVarsFunctions.pas, which can be used for inter-execution data exchange. To activate them, just have a “uses dwsGlobalVarsFunctions” somewhere in your project.

    They expose a set of Read/WriteGlobalVar functions, which allow storing and retrieving named variants across all script executions running within the same Delphi process, and those reads & writes are “atomic” from a threading point of view.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

i would like know some reference. I know i can googling it. but prefer
I would like to know what guys are using to make diagram of your
i would like know how to build a rss feed that is evergoing using
I know dwscript has operator overloading for compound operators += etc. I would like
I would like to know if I can open 2 different diagrams using MS
Would like to know what a programmer should know to become a good at
Would like to know the c# code to actually retrieve the IP type: Static
Would like to know how to integarate cruise control with maven? Cruise Control comes
Would like to know how to hide an div after a set of css3
I would like to know how to define a returntype in a function in

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.