in reply to Re: Re: Re: Re: Data copied with fork() -> how to access true data?
in thread Data copied with fork() -> how to access true data?

But that also seems not to work on Windows systems. That is, it never worked for me. But that also seems not to work on Windows systems. That is, it never worked for me.

Again, my best guess is that the reason it doesn't work for you is because you are using '98. It works for me on NT & XP.

You say it'll depend on how my code is currently structured, but that's no important issue.

Why it is important is that you cannot call objects across threads using Perl's iThreads implementation. You can share data, but not code pointers, ie. methods. That makes utilising objects with threads awkward.

You could use a thread to interact with the user and queue the input to the main thread that manipulates the objects. That is pretty easy to do, but actually only achieves the same as putting a timeout on the IO, hence teh mention of ReadKey().

If you thought is to make each NPC a separate thread running around on it's own and interacting when they come into contact, the problem is need to share the environment between threads. If the environment is also represented using objects, the problem of sharing those objects between threads returns.


Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
  • Comment on Re: Re: Re: Re: Re: Data copied with fork() -> how to access true data?

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Re: Data copied with fork() -> how to access true data?
by muba (Priest) on Jun 01, 2004 at 21:17 UTC
    Data sharing
    Yeah, I've had a look at the documentation. I also saw blessed hashes may be blessed in one thread but not in another. So I have to have a closer look at that.

    Main threat that communicates with the objects
    Your idea of the main threat maintaining the objects might be a good idea and I will consider it the most likely to use possibility for the moment.

    One thread per NPC?
    No, I was not intending to give every NPC its own thread. Actually, I only need two threads: one to take care of all NPC's (all NPC's are allowed to do their things one by one, maybe in a random order, maybe in order-of-appearance in the "realm"), one to take care of the human (well... let's hope so :D ) player.

    thinking aloud mode
    While philosophing a little about that, it might be a good idea to create a new thread whenever a new NPC has to be spawned. Then, within that thread, the first thing to do is to create a new instance of the appropriate class. But philosophing a little more, I come to the conclusion this will give problems when different objects need to get each other's data. This maybe might be solved by having subroutines in the main module that can access objects data. Although I do not quite see how to do this, it is worth to keep in mind, somewhere.

    For now... thank you!
    Good, it's late over here already and I am getting too tired to think straight, so I'll continue tomorrow. I've been playing around a little with programming different threads and I master the basics of it, so that part will not be too difficult.

    So far, thank you all for all the hints, help and links to documentation you gave me!