W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
一個客戶端應(yīng)用可以使用本節(jié)描述的函數(shù)請求取消一個仍在被服務(wù)器處理的命令。
PQgetCancel
創(chuàng)建一個數(shù)據(jù)結(jié)構(gòu),這個數(shù)據(jù)結(jié)構(gòu)包含取消一個通過特定數(shù)據(jù)庫連接發(fā)出的命令所需要的信息。
PGcancel *PQgetCancel(PGconn *conn);
PQgetCancel
創(chuàng)建一個PGcancel
對象,給出一個 PGconn
連接對象。 他將返回NULL
,如果給出的conn
為 NULL
或是一個無效的連接。 The PGcancel
對象是一個不透明結(jié)構(gòu),不應(yīng)該被應(yīng)用所直接訪問。它只能夠傳遞到
PQcancel
或 PQfreeCancel
。
PQfreeCancel
釋放一個由PQgetCancel
創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)。
void PQfreeCancel(PGcancel *cancel);
PQfreeCancel
釋放一個之前由PQgetCancel
創(chuàng)建的數(shù)據(jù)對象。
PQcancel
要求服務(wù)器放棄當(dāng)前命令的處理。
int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize);
如果取消請求成功發(fā)送,則返回值為 1,否則為 0。如果不成功,則errbuf
會被填充一個解釋性的錯誤消息。errbuf
必須是一個尺寸為errbufsize
的字符數(shù)組(推薦尺寸為 256 字節(jié))。,解釋為何不成功。errbuf必須是 一個大小為errbufsize的
char 數(shù)組(建議大小為 256 字節(jié))。
不過,成功的發(fā)送并不保證請求會有任何效果。如果取消有效,那么當(dāng)前的命令將提前終止并且返回一個錯誤結(jié)果。如果取消失敗(也就是說, 因為服務(wù)器已經(jīng)完成命令的處理),那么就根本不會有可見的結(jié)果。
如果errbuf
是信號處理器中的一個局部變量,PQcancel
可以從一個信號處理器中安全地調(diào)用。 在PGcancel
有關(guān)的范圍內(nèi),
PQcancel
都是只讀的,因此也可以在一個從操縱PGconn
對象的線程中獨立出來的線程中調(diào)用它。
PQrequestCancel
PQrequestCancel
是PQcancel
的一個被廢棄的變體。
int PQrequestCancel(PGconn *conn);
要求服務(wù)器放棄當(dāng)前命令的處理。它直接在PGconn
對象上進(jìn)行操作, 并且如果失敗,就會在PGconn
對象里存儲錯誤消息(因此可以用PQerrorMessage
檢索出來)。 盡管功能相同,這個方法在多線程程序里和信號處理器里會帶來危險,因為它可能
覆蓋PGconn
的錯誤消息,進(jìn)而將當(dāng)前連接上正在處理的操作搞亂。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: