• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
     首頁 > 技術(shù) > 技術(shù)文摘 > 使用C++Builder快速實現(xiàn)自己的專用IVR

    使用C++Builder快速實現(xiàn)自己的專用IVR

    2009-06-04 00:00:00   作者:   來源:   評論:0 點擊:


    2009/06/04

    1.涉及的組件
      使用C++Builder開發(fā)固定流程的IVR。
      來話后放音,循環(huán)放音完成后掛機。
    ////////////////////////////////////////////////////////////


    FindCallByID(m_OriginalCallID);

    class CThreadManager
    {
    private:
    TBucketList *m_pThreadList; //線程列表哈希表
    TCriticalSection *m_pListLocker; //線程鎖

    public:
    CThreadManager();
    ~CThreadManager();

    //將線程加入線程表
    void AddThread(TThread *pThd);
    //根據(jù)線程ID從線程中移除
    void RemoveThreadByThreadID(int ThreadID);
    //根據(jù)線程ID查找線程對象
    TThread *FindThreadByThreadID(int ThreadID);
    };


    //線程管理器構(gòu)造
    CThreadManager::CThreadManager()
    {
    m_pThreadList = new TBucketList(bl16);
    m_pListLocker = new TCriticalSection();
    }

    //線程管理器析構(gòu)
    CThreadManager::~CThreadManager()
    {
    delete m_pThreadList;
    delete m_pListLocker;
    }


    //加入線程列表
    void CThreadManager::AddThread(TThread *pThd)
    {
    //多線程訪問列表,需要加鎖
    m_pListLocker->Acquire();
    try
    {
    m_pThreadList->Add((void*)(pThd->ThreadID), pThd);
    }
    catch(...)
    {
    }
    m_pListLocker->Release();
    }

    //從線程列表中刪除
    void CThreadManager::RemoveThreadByThreadID(int ThreadID)
    {
    //多線程訪問列表,需要加鎖
    m_pListLocker->Acquire();
    try
    {
    TThread *pThd = NULL;
    if (m_pThreadList->Find((void*)ThreadID, (void*)pThd))
    {
    m_pThreadList->Remove((void*)ThreadID);
    }
    }
    catch(...)
    {
    }
    m_pListLocker->Release();
    }

    //根據(jù)線程ID查找線程
    TThread * CThreadManager::FindThreadByThreadID(int ThreadID)
    {
    TThread *pRetThd = NULL;

    //多線程訪問列表,需要加鎖
    m_pListLocker->Acquire();
    try
    {
    TThread *pThd = NULL;
    if (m_pThreadList->Find((void*)ThreadID, (void*)pThd))
    {
    pRetThd = pThd;
    }
    }
    catch(...)
    {
    }
    m_pListLocker->Release();
    return pRetThd;
    }

    CTI論壇報道

    相關(guān)閱讀:

    分享到: 收藏

    專題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 麟游县| 永靖县| 和平区| 碌曲县| 新蔡县| 西城区| 平顶山市| 樟树市| 修水县| 新郑市| 敦化市| 东乌珠穆沁旗| 中西区| 射洪县| 灯塔市| 周口市| 河西区| 龙江县| 玉环县| 砚山县| 榆社县| 荆门市| 定南县| 江北区| 邢台市| 容城县| 闸北区| 长岛县| 湖南省| 恩平市| 兰州市| 财经| 晋城| 万全县| 黑山县| 太白县| 大丰市| 乡宁县| 中宁县| 陆丰市| 苗栗县| http://444 http://444 http://444 http://444 http://444 http://444