Hi

iam a newbie to C++
I have a problem, pls give me a solution

I have an object in the shared memory which encapsulates an array of 6 objects. I want to acess one of the objects in the array. If the first object in the array is already locked by a process, i want to get the second object and so on.

Please tell me how to do this and please let me know, how to check whether an object in the array is already locked by some process or it is free to access?

Thanks in Advance

Vadan

This is a problem aout "Communication among process". You can solve it by using "singal, mutex,memory share ect"

Hi

iam a newbie to C++
I have a problem, pls give me a solution

I have an object in the shared memory which encapsulates an array of 6 objects. I want to acess one of the objects in the array. If the first object in the array is already locked by a process, i want to get the second object and so on.

Please tell me how to do this and please let me know, how to check whether an object in the array is already locked by some process or it is free to access?

Thanks in Advance

Vadan

well, you could have another array of 6 bools that marks that the corresponding object in the info array is locked or not ( a flags array, or something ), only be very carefull about syncronization... the locking of an object from the array and setting the corresponding flag are 2 different operations... u must make them atomic!! if not, if a context switch is made between them and another process might then check the flags, it will find an object unlocked while it is actually locked but the flag is not properly set because of the context switch that happend between the locking of the object and the flag setting.

thanks for the replies

i want to know how to check whether an object is being locked by a process or not

That depends on your OS in C++. C++ itself doesn't have functions for that. Maybe some library does have crossplatform functions for it. If you're on Windows, go to MSDN and lookup the threading functions there.

This article has been dead for over six months. Start a new discussion instead.