在数据库可以同时锁几个表吗,就是说要么同时锁住3个表,要么当其中有一个表在其他线程中锁住时,剩下的两个表都不锁!有点类似win32中,WaitForMultipleObjects(2, myChopsticks, TRUE, INFINITE);myChopsticks为两个mutex

解决方案 »

  1.   

    LOCK TABLE t1 WRITE, t2 READ ,t3 WRITE;
      

  2.   

    feiwinghang 
      '截至2010-04-21 21:02:57  用户结帖率0.00% 当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
      

  3.   

    虽然写的是写锁t1,t3,读锁t2,当是我在多线程程序中测试,全用写锁,如共有表t1,t2,t3,刚开始,第一个线程锁住t1,t2,过了三秒,第二个线程要锁住t1,t2,t3,在第六秒第三个线程锁住t3,在第十秒时解锁第一个线程锁住的t1,t2,然后第12秒解释线程2的三个表锁
    要是一个LOCK TABLE t1 WRITE, t2 WRITE,t3 WRITE;语句是等待三个都能锁住才执行的话,由于t1,t2已经在第一个线程中被锁住了,第六秒处理的锁住t3应该能即时生效吧,而实际操作结果表明,线程3的锁表会得等到线程的锁表结束后才能执行,也就是结果是线程2,在第10秒时执行,线程3得等到线程2解锁释放后,才能执行锁表t3
      

  4.   

    看得头晕。建议换种描述方法 , 比如      Thread 1,          Thread 2,            Thread 3
    t1    lock tb1,tb2,tb3
    t2                       lock tb1,tb2
    t3 
    t4 
    t5 ....
      

  5.   

          Thread 1,          Thread 2,            Thread 3
    t1    lock tb1,tb2,tb3
    t2                       lock tb1,tb2         lock tb3
    t3 
    t4 
    t5 ....
    嗯,谢谢,刚又测试了下,应该是一锁全锁的