我希望我的功能只运行一次。这意味着如果许多线程同时调用它,该函数将阻止除一个线程之外的所有线程,并且只允许它运行。
答案 0 :(得分:0)
听起来您希望存储过程执行同步。为什么不把同步放在应用程序本身。
pthread_mutex_lock(&lock);
... Call stored procedure here ..
pthread_mutex_unlock(&lock);
如果需要在数据库级别提供同步,则可以在存储过程中使用LOCK和UNLOCK TABLES命令。锁定进入程序并在退出时解锁。根据您的需要,您可能希望创建一个锁定和解锁的虚拟表,而不是此进程和其他进程正在使用的实际数据表。有关详细信息,请参阅here。