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