On 02/12/2009, at 3:26 PM, Ken Anderson wrote:

> I could certainly copy them, but that would require another EC, my option 
> #2...

It's an ec per thread. Shouldn't be a problem.

> There's also another downside I forgot to mention with plan #2 - there's 
> interim data stored in all of these EOs that would need to be centrally 
> accessed...

Accessed how? Notifications? If this interim data is saved to the db first(?) 
then just refault the eo in the other/main thread after receiving the relevant 
notification.

> which means that even if I did copy all the EOs, I would have to find a way 
> for them to share results.
> 
> On Dec 1, 2009, at 9:43 PM, Lachlan Deck wrote:
> 
>>> All,
>>> 
>>> I'm trying to decide on the best approach to something, and I'd like you 
>>> guys to weigh in on possible options I might be overlooking.
>>> 
>>> I have an application that does a lot of back-end processing.  It has no UI 
>>> (web or otherwise) to speak of.
>>> 
>>> A large structure of EO's is built up that handles processing of price data 
>>> as it arrives on an ActiveMQ queue.  The EOs are all related in a pretty 
>>> big object graph, so it's really convenient to have all this processing 
>>> built right into the EOs.
>>> 
>>> So - here's the problem.  Once the whole structure gets initialized, 
>>> there's hardly any database access.  The structure is in place, and except 
>>> for saving new price data, not much database interaction occurs.  However, 
>>> to be safe, I really need to have the EC locked - especially in the 
>>> beginning when many faults are firing.
>>> 
>>> At the moment, the whole thing is single threaded, since I lock the EC that 
>>> all the objects are in, then push the one price in.  Different things get 
>>> computed, prices pop out, and then I process then next incoming price on 
>>> the queue.
>>> 
>>> Except for locking the editing context, the entire structure could easily 
>>> be multi-threaded, allowing me to handle more than one price at a time.  
>>> This would be a significant benefit, since there's a decent amount of 
>>> processing that goes on for each incoming price, and we're running on an 8 
>>> processor machine.
>>> 
>>> To multi-thread this, I have 2 options that I can think of:
>>> 
>>> 1)  Build the processing into classes that are NOT EOs, and copy the 
>>> relevant information into these structures so that it's not necessary to 
>>> lock an editing context.
>>> 
>>> 2)  Have multiple editing contexts, with all the heavyness that will come 
>>> with thousands of EOs being duplicated.
>>> 
>>> 
>>> I really hate #1, since everything is working so nicely, and I really 
>>> appreciate EOF doing all the heavy lifting of relating everything.
>> 
>> Any reason why you can't copy the objects via their globalID into another 
>> thread and hand off the processing...
> 

with regards,
--

Lachlan Deck



 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to