当前位置: 首页 > news >正文

PostgreSQL 10.1 手册_部分 IV. 客户端接口_第 33 章 libpq - C 库_33.19. 在线程化程序中的行为...

33.19. 在线程化程序中的行为

libpq默认是可再入的并且是线程安全的。你可能需要使用特殊的编译器命令行选项来编译你的应用代码。参考你的系统文档来了解如何编译启用线程的应用,或者在src/Makefile.global中查找PTHREAD_CFLAGSPTHREAD_LIBS。这个函数允许查询libpq的线程安全状态:

PQisthreadsafe

返回libpq库的线程安全状态。

int PQisthreadsafe();

如果libpq是线程安全的则返回 1,否则返回 0。

一个线程限制是不允许两个线程同时尝试操纵同一个PGconn对象。特别是你不能从不同的线程通过同一个连接对象发出并发的命令(如果你需要运行并发命令,请使用多个连接)。

PGresult对象在创建后通常是只读的,并且因此可以在线程之间自由地被传递。但是,如果你使用任何第 33.11 节或第 33.13 节中描述的PGresult修改函数,你需要负责避免在同一个PGresult上的并发操作。

被废弃的函数PQrequestCancel以及PQoidStatus不时线程安全的并且不应当在多线程程序中使用。PQrequestCancel可以被替换为PQcancelPQoidStatus可以被替换为PQoidValue

如果你在应用中使用 Kerberos (除了在libpq中之外),你将需要对 Kerberos 调用加锁,因为 Kerberos 函数不是线程安全的。参考libpq源代码中的PQregisterThreadLock函数,那里有在libpq和应用之间做合作锁定的方法。

如果你在线程化应用中碰到问题,将该程序运行在src/tools/thread来查看是否你的平台有线程不安全的函数。这个程序会被configure运行,但是对于二进制发布,你的库可能不匹配用来编译二进制的库。

本文转自PostgreSQL中文社区,原文链接:33.19. 在线程化程序中的行为

相关文章:

  • facl权限(getfacl/setfacl)
  • Python打包系统简单入门
  • 动画开发
  • 高性能架构-存储高性能-关系型数据库
  • While executing gem bad response Not Found 404
  • mysql重启,重启释放ibtmp1
  • 我是一个线程(修订版) 转
  • 从头编写一个 HTTP 静态资源服务器
  • 简单手撸代码进入SMP2018中文人机对话技术评测任务一前三甲
  • 小程序开发之插件功能的有效实现方法
  • 数据库 Oracle12c (三):安装与启动
  • elasticsearch实战---中文拼音A-Z排序(完美解决)
  • NOIP2018 游记
  • Python 的经典设计格言,格言来源于 Python 但不限于 Python
  • 关于微信小程序登录,后端如何生成3rd_session?(后端为c#)
  • ES6指北【2】—— 箭头函数
  • @angular/forms 源码解析之双向绑定
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • CODING 缺陷管理功能正式开始公测
  • ES10 特性的完整指南
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • magento 货币换算
  • React16时代,该用什么姿势写 React ?
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Vue学习第二天
  • 从0到1:PostCSS 插件开发最佳实践
  • 前端_面试
  • 前嗅ForeSpider教程:创建模板
  • 软件开发学习的5大技巧,你知道吗?
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 译米田引理
  • 再谈express与koa的对比
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 昨天1024程序员节,我故意写了个死循环~
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • #stm32驱动外设模块总结w5500模块
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (C语言)逆序输出字符串
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (一) springboot详细介绍
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • ***原理与防范
  • ../depcomp: line 571: exec: g++: not found