ACE多執行緒技術和OCCI連線池技術的應用測試

2021-04-16 09:15:02 字數 2431 閱讀 2648

主要功能是使用資料庫連線池和多執行緒技術用occi訪問oracle,貼出來和大家共同學習.

#undef ace_has_standard_cpp_library

#define ace_has_standard_cpp_library 1

#include "ace/os.h"

#include "ace/log_msg.h"

#include "ace/task.h"

#include

#include "occi.h"

using namespace std;

using namespace oracle::occi;

class occipool_handler

/*** destructor for the occipool_handler. */

~occipool_handler()

/* *        create the occi pool */

int create_pool()

else

} catch (sqlexception ex)

} /*

*        pull a connection */

connection *pull_connection()

else

if (con)

else

} catch (sqlexception ex)

} /*

*        push a connection */

void push_connection(connection *con)

else

cout << "occi pool must be created in advance." << endl; }

catch (sqlexception ex)

} private:

environment *env_;

connectionpool *connpool_;

ace_thread_mutex mutex_; };

class task_handler: public ace_task < ace_mt_synch >  //sub children thread

virtual int svc(void)

else

statement *localstatement = con->createstatement(

"select ioid_db,ioid_id0,ioid_type,ioid_rev,to_char(created_time,'yyyymmdd'),to_char(mod_time,'yyyymmdd'),read_access,write_access, ""staff_id,parent_id,region_level,region_name,area_code,description ""from ls6_para.region_t where region_level = :f1 order by ioid_id0");

if (localstatement == null)

return  -1;

localstatement->setint(1, 3);

resultset *rst = null;

try

catch (sqlexception &e)

if (rst == null)

resultset::status localstatus = rst->next();

if (localstatus == resultset::end_of_fetch)

else

} catch (sqlexception &ex)

} localstatement->closeresultset(rst);

con->terminatestatement(localstatement);

pool_->push_connection(con);

return 0; }

private:

occipool_handler *pool_; };

int ace_tmain(int, ace_tchar *) ;

occipool_handler *occipool = new occipool_handler();

if (occipool->create_pool())

task_handler *task = new task_handler(occipool);

task->activate(thr_new_lwp | thr_joinable, num_uses);

ace_thread_manager::instance()->wait();

delete task;

delete occipool;

return 0; }

ACE多執行緒伺服器

ace adaptive communication environment 它是乙個物件導向的 跨平台的 開放原始碼的網路程式設計基礎設施框架。ace 是由加利福尼亞大學irvine分校的douglas c.schmidt 博士主導開發的,是一種跨平台可編譯的網路程式設計api,並隨後在工業界中發...

多執行緒技術

1,程序 執行緒 程序 系統中同時執行的不同程式 執行緒 程式中同時執行不同的操作 單個cpu只能按順序執行指令,cpu可以隨機在不同的程序和執行緒進行切換,保證程序和執行緒都執行一遍後再重複這個過程。因為cpu執行速度足夠快,讓人感覺程式是同時執行的。2,執行緒 thread thread sle...

多執行緒開發和Socket技術

程序 每個應用程式對應乙個程序 執行緒 乙個程序至少包含乙個執行緒,執行緒要和cpu進行互動。多執行緒併發 可以理解為 同一時間 執行多件事情,如程式一邊執行,一邊計數 計時 如人一邊吃飯,一邊看電視。多執行緒併發的本質,其實並不是cpu 同時 執行多件事情,而是在不停的切換,執行一段時間事件a,切...