我使用mysql ++连接MySQL数据库来执行一堆数据查询.由于我正在读取的表格经常被写入,并且我需要一致的数据视图,因此我首先锁定表格.但是,MySQL在其锁定查询中没有'NOWAIT'的概念,因此如果表被其他东西锁定,使它们长时间锁定,我的应用程序就在那里等待.我想要它做的是能够返回并说出"无法获得锁定"之类的东西,并在几秒钟后重试.我对此超时的一般尝试如下.
如果我在锁定数据库上的表后运行此命令,我会收到超时命中的消息,但我不知道如何让mysql_query行终止.我很感激任何帮助/想法!
volatile sig_atomic_t success = 1;
void catch_alarm(int sig) {
cout << "Timeout reached" << endl;
success = 0;
signal(sig,catch_alarm);
}
// connect to db etc.
// *SNIP
signal (SIGALRM, catch_alarm);
alarm(2);
mysql_query(p_connection,"LOCK TABLES XYZ as write");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1516 次 |
最近记录: |