在分叉的进程中使用相同的MySQL连接是否很好?

时间:2018-07-11 17:31:01

标签: mysql c linux fork

这样做好/安全/可靠,为什么?

int main()
{
    MYSQL *mysqldbconn = mysql_init(NULL);

    if(mysqldbconn != NULL)
    {
        if(mysql_real_connect(mysqldbconn, host,
                              user, password,
                              NULL, port, NULL, 0) != NULL)
        {
            pid_t pid = fork();
            if(pid >= 0)
            {
                if(pid == 0)
                {
                    mysql_query(mysqldbconn, "insert into `test`.`abc`(`x`, `y`) values (1, 2)");
                    exit(0);
                }
                else
                {
                    mysql_query(mysqldbconn, "insert into `test`.`abc`(`x`, `y`) values (3, 4)");
                    usleep(1000000);
                }
            }
        }
    }

    return 0;
}

我想知道是否应该为每个子进程打开一个新的连接,或者我可以只在开始时连接一次,然后在每个派生的子进程中使用它。 上面的用法示例是否可能导致危险的数据争用? mysql_query是原子的吗?

谢谢您的建议。

0 个答案:

没有答案