[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: RE: OT: RE: Squeezing more coroutines ?
- From: "Jerome Vuarand" <jerome.vuarand@...>
- Date: Thu, 31 May 2007 10:26:19 -0400
Bogdan Harjoc wrote:
> Robert Raschke wrote:
>> Markus wrote:
>>> However, I do agree with Stefan, that a million threads is probably
>>> not the best known solution, whatever the problem... But ofcourse I
>>> am happy to be shown wrong here!
>>
>> Telco land has needs for enormous amounts of concurrency. Have a
>> look at Erlang (http://www.erlang.org/) for one way of dealing with
>> that.
>
> Yours was the first on-topic reply, although I suppose I should have
> given more details if I was expecting on-topic repies. Yes, I am
> (aiming at) simulating 1 million voip clients, each placing a
> phonecall from time to time (maybe you 'guessed' by looking at the
> email address ?).
>
> And the reason I (assumed I) needed one thread per client was because
> I needed to be able to express client behaviour in a natural way (Lua
> coroutines + an event
> loop being a good candidate for doing this).
What you're trying to do is called a Multi-Agent System (MAS) [1]. In
many cases cooperative multi-threading is the best solution to MAS
problems, and coroutine are an example of cooperative multi-threading
systems. On the other hand Lua coroutines were designed as a general
programming tool, whereas getting millions of concurrent threads require
some specialized models (among other things to solve the memory problem
you encountered). Maybe you can have a look at Erlang, which was
designed for the kind of problems you have. And if it doesn't fit you're
probably better writing your own high level domain specific language,
with a kind of virtual machine to run it (the virtual machine can be
implemented in Lua and use coroutines, but maybe not one per agent).
[1] http://en.wikipedia.org/wiki/Multi-agent_systems