33.19. 在线程化程序中的行为
libpq默认是可再入的并且是线程安全的。你可能需要使用特殊的编译器命令行选项来编译你的应用代码。参考你的系统文档来了解如何编译启用线程的应用,或者在src/Makefile.global
中查找PTHREAD_CFLAGS
和PTHREAD_LIBS
。这个函数允许查询libpq的线程安全状态:
一个线程限制是不允许两个线程同时尝试操纵同一个PGconn
对象。特别是你不能从不同的线程通过同一个连接对象发出并发的命令(如果你需要运行并发命令,请使用多个连接)。
PGresult
对象在创建后通常是只读的,并且因此可以在线程之间自由地被传递。但是,如果你使用任何第 33.11 节或第 33.13 节中描述的PGresult
修改函数,你需要负责避免在同一个PGresult
上的并发操作。
被废弃的函数PQrequestCancel
以及PQoidStatus
不是线程安全的并且不应当在多线程程序中使用。
PQrequestCancel
可以被替换为PQcancel
。
PQoidStatus
可以被替换为PQoidValue
。
如果你在应用中使用 Kerberos (除了在libpq中之外),你将需要对 Kerberos 调用加锁,因为 Kerberos 函数不是线程安全的。参考libpq源代码中的PQregisterThreadLock
函数,那里有在libpq和应用之间做合作锁定的方法。
文章转载自PostgreSQL全球开发组,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
1650次阅读
2025-04-21 16:58:09
9.9 分高危漏洞,尽快升级到 pgAdmin 4 v9.2 进行修复
严少安
386次阅读
2025-04-11 10:43:23
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
372次阅读
2025-04-15 14:48:05
转发有奖 | PostgreSQL 16 PGCM高级认证课程直播班招生中!
墨天轮小教习
184次阅读
2025-04-14 15:58:34
中国PostgreSQL培训认证体系新增PGAI应用工程师方向
开源软件联盟PostgreSQL分会
182次阅读
2025-05-06 10:21:13
PG生态赢得资本市场青睐:Databricks收购Neon,Supabase融资两亿美元,微软财报点名PG
老冯云数
142次阅读
2025-05-07 10:06:22
SQL 优化之 OR 子句改写
xiongcc
136次阅读
2025-04-21 00:08:06
告别老旧mysql_fdw,升级正当时
NickYoung
121次阅读
2025-04-29 11:15:18
PostgreSQL中文社区亮相于第八届数字中国峰会
PostgreSQL中文社区
105次阅读
2025-05-07 10:06:20
PostgreSQL的dblink扩展模块使用方法
szrsu
103次阅读
2025-04-24 17:39:30