PostgreSQL10.1手冊_部分IV.客戶端介面_第33章libpq-C庫_33.19.線上程化程式中的行為
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和應用之間做合作鎖定的方法。
如果你線上程化應用中碰到問題,將該程式執行在src/tools/thread
來檢視是否你的平臺有執行緒不安全的函式。這個程式會被configure
執行,但是對於二進位制釋出,你的庫可能不匹配用來編譯二進位制的庫。
本文轉自PostgreSQL中文社群,原文連結:33.19. 線上程化程式中的行為
相關文章
- PostgreSQL10.1手冊_部分IV.客戶端介面_第33章libpq-C庫_33.18.SSL支援SQL客戶端
- PostgreSQL10.1手冊_部分II.SQL語言_第15章並行查詢_15.4.並行安全性SQL並行
- PostgreSQL10.1手冊_部分III.伺服器管理_第22章管理資料庫_22.6.表空間SQL伺服器資料庫
- ESP作為單連線中的TCP客戶端TCP客戶端
- Nacos - 客戶端註冊客戶端
- PostgreSQL10.1手冊_部分III.伺服器管理_第31章邏輯複製_31.7.安全SQL伺服器
- PostgreSQL10.1手冊_部分II.SQL語言_第8章資料型別_8.12.UUID型別SQL資料型別UI
- 4.2.14.3 為Oracle呼叫介面客戶端啟用快速連線故障轉移Oracle客戶端
- MQTT X Web:線上的 MQTT 5.0 客戶端工具MQQTWeb客戶端
- C++20協程例項:攜程化的IOCP服務端/客戶端C++服務端客戶端
- 打通前後端邏輯,客戶端Flutter程式碼一天上線後端客戶端Flutter
- 服務端和客戶端 RESTful 介面上傳 Excel 的 Python 程式碼服務端客戶端RESTExcelPython
- impala客戶端連線客戶端
- 走近原始碼:Redis命令執行過程(客戶端)原始碼Redis客戶端
- 如果呼叫遠端遠端url介面為https,且存在客戶端證書驗證,如何在客戶端處理HTTP客戶端
- Swoole 協程 MySQL 客戶端與非同步回撥 MySQL 客戶端的對比MySql客戶端非同步
- Oracle 19c中連線RMAN客戶端的連線方法Oracle客戶端
- PostgreSQL10.1手冊_部分III.伺服器管理_第18章伺服器設定和操作_18.4.管理核心資源SQL伺服器
- validation客戶端驗證框架使用手冊客戶端框架
- CouchBase C 客戶端介面呼叫例項客戶端
- 主流資料庫和 NoSQL 的 Rust 客戶端驅動程式資料庫SQLRust客戶端
- 「美餐客戶端 3.0」設計過程客戶端
- Eureka客戶端原始碼解析 註冊/心跳/本地重新整理/下線客戶端原始碼
- 「iOS」行車服務app 「客戶端、後端思路+程式碼」iOSAPP客戶端後端
- 羽毛球群檔案--客戶手冊
- VNC客戶端是Windows,VNC客戶端是Windows如何進行操作VNC客戶端Windows
- Redis客戶端連線數DevOpsRedis客戶端dev
- mysql、redis 客戶端連線池MySqlRedis客戶端
- Zookeeper C客戶端庫編譯客戶端編譯
- 我的郵箱客戶端程式Popmail客戶端AI
- JavaScript判斷手機、平板電腦客戶端程式碼JavaScript客戶端
- 國家漏洞庫CNNVD:關於微信Windows客戶端遠端程式碼執行漏洞的預警CNNWindows客戶端
- Kubernetes客戶端和管理介面大集合客戶端
- nginx 處理客戶端請求的完整過程Nginx客戶端
- 會話中,如何將訪客轉化為客戶的幾種方法會話
- .net socket.io客戶端使用過程客戶端
- 線上故障處理手冊
- 自己動手寫個 Android客戶端Android客戶端