I'm pretty sure that the only way to do this is to use an engine (such as
InnoDB) that supports transactions across multiple statements. You need some
global resource that is single-threaded, and unless you have something in a
file system somewhere that supports locking there I don't see any ready way
to do this.

Remember, however unlikely any collision that might happen eventually will.
You can't fix this problem without a location-wide single-threaded resource.

Regards,

Jerry Schwartz
Global Information Incorporated
195 Farmington Ave.
Farmington, CT 06032

860.674.8796 / FAX: 860.674.8341


> -----Original Message-----
> From: Ravi Kumar. [mailto:[EMAIL PROTECTED]
> Sent: Thursday, December 07, 2006 7:18 AM
> To: mysql@lists.mysql.com
> Subject: Thread safety
>
> Dear All:
>
> I have a table T1 with these columns:
>
>     location - varchar
>     odd_even - varchar
>
> I have a php page that is called from VC applications installed in 5
> different locations (L1, L2, L3, L4 and L5). The page returns 0 or 1
> depending on even call or odd call from each location. (1st, 3rd, 5th,
> 7th... page calls are odd and 2, 4, 6, 8 are even.)
>
> The page has this logic:
>
>     select odd_even from T1 where location = '$location'
>
>     if (odd_even == 'odd')
>         update T1 set odd_even = 'even' where location =
> '$location' and
> odd_even = 'odd';
>         return '0';
>     else
>         update T1 set odd_even = 'odd' where location =
> '$location' and
> odd_even = 'even';
>         return '1';
>
> But since each location calls the page in very quick
> succession (a location
> have have several parallel calls running - its a multi
> threaded app), there
> is a race condition. And at times several continuous calls return same
> result (odd or even).
>
> How do I achieve thread safety?
>
> Please help. Its urgent.
>
> Thanks.
>
> Ravi.
>
>
>
>
>
>
>




-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to