aye, the threading library is part of openos. without installing it, you've got not thread api
My solution to your issue would be to put a timeout on computer.pullSignal. If it times, execute the next pending command (if there is one)
I'm trying to write a script to control a worker drone. This drone will interact with plants on specific coordinates that are being fed to him by mainframe via wireless modem. I've planned to have those commands:
1. Add/remove new coordinates.
2. Print out all registered coordinates.
3. Finish the job, return to charger and wait for further commands.
The initial solution included using two threads: a worker thread that executes requested and routine actions and a controller thread that listens for new modem messages, updates drone status and generates responses for the mainframe. The problem is - drones have no access to Thread API. I believe there should be a simple solution for this task but I don't see any suitable way to provide such level of responsiveness without proper threading.
Rough example for drone :
thread.create(function() -- Worker
while true do
if state == "work" then
for _, pos in pairs(locations) do
if state ~= "work" then break end
elseif state == "stop" then
thread.create(function() -- Controller
while true do
local message = table.pack(computer.pullSignal())
if message == "modem_message" then
local command = serialization.deserialize(message)
if command.text == "stop" then
state = "stop"
elseif command.text == "resume" then
state = "work"
I am sure somebody already did this kind of stuff on their server, I just can't come up with anything effective and simple without surpassing the 4KiB threshold. Do you have any suggestions?