如何强制程序的一部分只运行一次
How to force a part of program to run just once?
我正在编写一个需要数据库的c++程序,我正在使用SQLite。我有一个函数createTables()
,它在数据库中创建表。但程序中真正困扰我的部分是,每次程序启动时,我都必须调用createTables()
。尽管创建表的SQL查询是这样的:
CREATE TABLE IF NOT EXISTS table_name
但我想知道是否可以在不使用if
或其他条件语句的情况下只运行一次代码的一部分我可以自己更改程序工作流吗?一个程序能改变自己吗
例如,假设原始代码为:
createTables();
otherPartOfProgram();
但对于下一次(假设在上一次运行中成功创建了表),程序改变了自己,工作流程类似于:
otherPartOfProgram();
这不能直接完成。您可以将存储在程序的外部(配置文件、注册表…)表的创建事实,或者更改createTables
函数,以便在尝试创建它们之前测试它们是否存在。
不过,一种更简单的方法是将表作为运行程序的先决条件。让一些外部代码创建它们。
标准库有一个解决方案,尽管它不是为您的情况设计的:
#include <mutex>
std::once_flag flag;
void f(); // to be called once
void main_function()
{
std::call_once(flag, f);
// ...
}
相关文章:
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 花括号使循环运行一次?
- 有没有办法在循环中的条件至少满足一次时运行语句?
- 如何一次运行3个函数?
- 有没有办法一次运行 3 个创建窗口函数?
- 如何通过一次运行将多个输入样本馈送到C++张量流模型
- 如何防止我的循环额外运行一次?
- 为什么循环只运行一次?
- 是否有一种方法可以在运行时停止循环重复一次不止一次
- 谷歌测试:如何为多个测试只运行一次夹具?
- 使用互斥锁将一次运行的线程数限制为 2
- CMAKE自定义目标仅运行一次
- 一次运行程序的多个实例C
- Qt C++每秒运行一次代码
- 程序一次运行每一行
- 为什么我的函数中的这个 for 循环只会运行一次,即使它应该运行多次?
- C 除了使用TBB :: task_group外,我如何一次运行三个不同的Parallel_for函数
- 使数据输入字段记住其值,从一次运行到下一次运行
- JNI_CreateJavaVM() 每隔一次运行应用程序时都会失败(确切地说)
- 如何使用c ++ / c从Windows命令行一次运行多个命令