Multi-threaded database interaction

Hello,

I recently wrote a Rails app that launches 7 threads that each need to do ActiveRecord::Base.finds on a PostgreSQL database. I figured that since no database information is being changed on calls to find, these calls would not require mutual exclusion. However, if I don't use mutual exclusion, I get all sorts of weird errors not long after the threads are spawned. It works just fine if I use mutual exclusion. Anyone know why this is? Thanks!

Matt White schrieb:

Hello,

I recently wrote a Rails app that launches 7 threads that each need to do ActiveRecord::Base.finds on a PostgreSQL database. I figured that since no database information is being changed on calls to find, these calls would not require mutual exclusion. However, if I don't use mutual exclusion, I get all sorts of weird errors not long after the threads are spawned. It works just fine if I use mutual exclusion. Anyone know why this is? Thanks!

>

you wouldn't happen to be sharing variables among threads?

I recently had that problem; I had mistakenly used instance vars in a threaded server. Then each new thread would change the instance vars and the old thread would go crazy with the new values.

never used the mutual exclusion though, the pick-axe discussion scared me away

/ak

Nope, I was pretty careful about launching each thread with its own instance variables.