Is squirrel code on agent single or multi threaded?


#1

Hi,

I understand that squirrel code running on imp device is single-threaded. What about on the agent?

It’s probably a basic question but I couldn’t find information anywhere. Normally I would assume code on server will run multi-threaded but I don’t know if this applies to imp’s agent code. Knowing this would help me greatly in thinking about the problem I’m trying to solve.

Thank you.


#2

From Squirrel’s point of view, agent code is single-threaded. Squirrel never interrupts other Squirrel, and callbacks (e.g. on HTTP complete) only happen when your agent is otherwise idle.

Our agent-server is itself multi-threaded at the C++/Erlang level, which helps it support large numbers of agents on each server machine – but to keep our users’ lives easier, each individual agent behaves in a strictly single-threaded way.

Peter


#3

That makes sense: it’s much easier to think of device and agent code running in the same way. Thank you.