⚡ Just an experiment to achieve multi-threading in AutoIt, as a library.
👏 All issues and pull requests are welcome!
🔔 Give a star and subscribe (watch) to get notified about changes.
Download the latest release (or build from source).
Library files:
- N.au3 - AutoIt include file
- N.dll - 32-bit DLL dependency
- N64.dll - 64-bit DLL (optional if 32-bit only)
Simple example:
#NoTrayIcon
#include 'N.au3'
func task()
MsgBox(0, '', "Hello, I'm in another thread.")
endfunc
func main()
local $t = NRun('task')
NWait($t)
endfunc
NMain('main')
More examples:
See N.au3 to get all APIs.
Requirements:
- Visual Studio 2017+
- C++ desktop development
- Windows SDK 8.1+
Build steps:
- Open true-autoit-multi-threading.sln
- Restore Nuget packages
- Choose CPU arch -> x86/x64
- Press build -> N.dll/N64.dll
- Copy above DLLs and N.au3 to your script folder
Please see the C++ source code, I'll update soon 😀.
Yep, it's designed for both running script in AutoIt.exe and compiled (also upx packed) EXE.
After the first thread is created, the memory increases once ~EXE size. And +80kB after each thread done, that isn't memory leaks, they are static members/smart pointers of AutoIt interpreter still alive. They will be freed when process exits.
Yesh, it is implemented with hash table. I don't know why AutoItObject lookups property name through array sequentially.
Nope.
Not implemented yet.