亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? testconc.cpp

?? 俄羅斯牛人KK的作品,著名的ORDBMS,這里上傳最新的3.39版本源代碼.希望了解對(duì)象關(guān)系數(shù)據(jù)庫(kù)的同好,請(qǐng)不要錯(cuò)過(guò).
?? CPP
字號(hào):
//-< TESTCONC.CPP >--------------------------------------------------*--------*
// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *
// (Main Memory Database Management System)                          *   /\|  *
//                                                                   *  /  \  *
//                          Created:     31-Nov-2002  K.A. Knizhnik  * / [] \ *
//                          Last update: 31-Nov-2002  K.A. Knizhnik  * GARRET *
//-------------------------------------------------------------------*--------*
// Test for concurrent update model
//-------------------------------------------------------------------*--------*

#include <stdio.h>
#include "fastdb.h"

USE_FASTDB_NAMESPACE

class Bank { 
  public:
    db_int8 total;
    bool    online;

    TYPE_DESCRIPTOR((FIELD(total), FIELD(online)));
};

REGISTER(Bank);

class Account {
  public:
    int4    id;
    db_int8 amount;
    
    TYPE_DESCRIPTOR((KEY(id, HASHED), FIELD(amount)));
};

REGISTER(Account);

dbLocalEvent timer;

const int nUpdateIterations = 10000;
const int nMaxAccounts = 1000;

void thread_proc inspector(void* arg)
{
    dbDatabase* db = (dbDatabase*)arg;
    db->attach();
    dbCursor<Account> accounts;
    dbCursor<Bank> bank;
    dbMutex mutex;
    int n = 0;
    bool online = true;
    mutex.lock();
    do {
        if (accounts.select() > 0) { 
            db_int8 total = 0;
            do { 
                total += accounts->amount;
            } while (accounts.next());
            bank.select();    
            assert(total == bank->total);
            online = bank->online;
        }
        db->commit();
        n += 1;
        timer.wait(mutex, 1);
    } while (online);
    mutex.unlock();
    printf("Thread performs %d inspection iterations\n", n);
}

int main(int argc, char* argv[])
{
    int i;
    int nThreads = 4;
#ifdef REPLICATION_SUPPORT
    char* servers[3] = {"localhost:6101", "localhost:6102", "localhost:6103"};       
    char dbName[16];
    if (argc < 3) { 
        fprintf(stderr, "Usage: testconc (update|inspect|coinspect) <REPLICATION-NODE-ID> [number-of-inspection-threads]\n");
        return 1;
    }
    int replNodeId = atoi(argv[2]);    
    sprintf(dbName, "testconc%d", replNodeId);
    if (argc == 4) {
        nThreads = atoi(argv[3]);
    }
    if (strcmp(argv[1], "coinspect") == 0) { 
        char fileName[32];
        sprintf(fileName, "%s.fdb", dbName);

        dbReplicatedDatabase db(dbDatabase::dbConcurrentRead);
        if (db.open(dbName, fileName, replNodeId, servers, itemsof(servers))) { 
            printf("Start %d inspection threads\n", nThreads);
            dbThread* thread = new dbThread[nThreads];
            timer.open(false);
            while (true) { 
                for (i = 0; i < nThreads; i++) { 
                    thread[i].create(inspector, &db);
                }        
                for (i = 0; i < nThreads; i++) { 
                    thread[i].join();
                }
                dbThread::sleep(10);                
            }
            timer.close();
            db.close();
            return EXIT_SUCCESS;
        }
    } else 
#else 
    char* dbName = "testconc";
    if (argc < 2) { 
        fprintf(stderr, "Usage: testconc (update|inspect) [number-of-inspection-threads]\n");
        return 1;
    }
    if (argc == 3) {
        nThreads = atoi(argv[2]);
    }
#endif
    if (strcmp(argv[1], "inspect") == 0) { 
        dbDatabase db(dbDatabase::dbConcurrentRead);
        if (db.open(dbName)) { 
            printf("Start %d inspection threads\n", nThreads);
            dbThread* thread = new dbThread[nThreads];
            timer.open(false);
            for (i = 0; i < nThreads; i++) { 
                thread[i].create(inspector, &db);
            }        
            for (i = 0; i < nThreads; i++) { 
                thread[i].join();
            }
            timer.close();
            db.close();
            return EXIT_SUCCESS;
        }
    } else {
#ifdef REPLICATION_SUPPORT
        char fileName[32];
        sprintf(fileName, "%s.fdb", dbName);

        dbReplicatedDatabase db(dbDatabase::dbConcurrentUpdate);
        if (db.open(dbName, fileName, replNodeId, servers, itemsof(servers))) { 
            printf("Update process started, now you should start inspectors: \"testconc inspector 1 N\", where N is number of inspectpors\n");            
#else 
        dbDatabase db(dbDatabase::dbConcurrentUpdate);
        if (db.open(dbName)) { 
            printf("Update process started, now you should start inspectors: \"testconc inspector N\", where N is number of inspectpors\n");            
#endif
            dbThread::sleep(2);
            dbCursor<Bank> bank(dbCursorForUpdate);
            dbCursor<Account> accounts(dbCursorForUpdate);
            dbQuery q;
            int id;
            q = "id=",id;

            // Initialization
            if (bank.select() == 0) { 
                Bank theBank;
                theBank.total = 0;
                theBank.online = true;
                insert(theBank);
            } else { 
                bank->online = true;
                bank.update();
            }
            db.commit();

            for (i = 0; i < nUpdateIterations; i++) { 
                int nAccounts = accounts.select();
                id = 0;
                db_int8 delta = i;
                if (accounts.last()) { 
                    id = accounts->id + 1;
                    accounts->amount += i;
                    accounts.update();
                    delta += i;
                }
                Account acc;
                acc.amount = i;
                acc.id = id;
                insert(acc);
                if (nAccounts > nMaxAccounts) {
                    accounts.first();
                    id = accounts->id;
                    int n = accounts.select(q);
                    assert(n == 1);
                    delta -= accounts->amount;
                    accounts.remove();
                }
                bank.select();
                bank->total += delta;
                bank.update();
                db.commit();
            }
            printf("End of %d update iterations\n", nUpdateIterations);
            bank.select();
            bank->online = false;
            bank.update();
            db.close();
            return EXIT_SUCCESS;
        }
    } 
    printf("Failed to open database\n");
    return EXIT_FAILURE;
}




?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频你懂的| 中文字幕第一页久久| 成人精品视频一区二区三区 | 成人自拍视频在线| 性久久久久久久久| 中文字幕在线免费不卡| 欧美电视剧在线看免费| 欧美亚洲国产一区二区三区va| 国产美女久久久久| 日本午夜精品视频在线观看| 成人欧美一区二区三区在线播放| 日韩精品一区二区三区视频在线观看 | 欧美亚洲精品一区| www.亚洲人| 国产毛片一区二区| 毛片一区二区三区| 日韩中文字幕1| 樱桃视频在线观看一区| 成人免费一区二区三区视频| 久久久亚洲综合| 精品国产一区二区三区久久久蜜月| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 国产亚洲欧美中文| 欧美mv和日韩mv国产网站| 91精品免费观看| 欧美精品国产精品| 欧美午夜免费电影| 一本到不卡精品视频在线观看 | 91影院在线观看| 风间由美一区二区三区在线观看| 久久精品国产秦先生| 日韩国产精品大片| 日韩高清欧美激情| 久热成人在线视频| 麻豆成人91精品二区三区| 免费视频一区二区| 麻豆精品视频在线观看| 久久草av在线| 国产一区二区三区在线观看免费 | 久久久精品人体av艺术| 久久伊人蜜桃av一区二区| www国产精品av| 久久综合九色综合欧美就去吻| 精品国产一区二区三区不卡| 精品日韩在线观看| 久久精品亚洲乱码伦伦中文| 久久久精品综合| 欧美国产日韩亚洲一区| 国产精品美女一区二区在线观看| 亚洲欧洲日韩在线| 一区二区三区中文字幕精品精品| 亚洲最大的成人av| 亚洲aⅴ怡春院| 美洲天堂一区二卡三卡四卡视频| 精品制服美女丁香| 国产成人一级电影| 91免费视频观看| 欧美亚洲一区三区| 日韩三区在线观看| 国产欧美在线观看一区| 亚洲欧美自拍偷拍| 亚洲高清免费一级二级三级| 青青草97国产精品免费观看无弹窗版| 免费在线观看精品| 国产精品白丝av| 色香蕉成人二区免费| 欧美电影在哪看比较好| 精品国产区一区| 亚洲色图色小说| 日韩av午夜在线观看| 国产精品资源网站| 欧美在线观看一区二区| 日韩欧美的一区二区| 中文字幕一区日韩精品欧美| 亚洲国产人成综合网站| 国产一本一道久久香蕉| 色婷婷精品久久二区二区蜜臂av | 国产日韩欧美精品一区| 亚洲精选免费视频| 蜜乳av一区二区三区| av电影在线观看完整版一区二区| 在线观看精品一区| 久久一区二区视频| 亚洲第一主播视频| 国产91精品免费| 337p亚洲精品色噜噜| 国产欧美精品一区二区色综合| 亚洲一区二区三区四区在线免费观看| 国产呦萝稀缺另类资源| 91久久国产最好的精华液| 欧美www视频| 亚洲丰满少妇videoshd| 国产91精品入口| 欧美成人欧美edvon| 亚洲综合一区在线| 成人动漫精品一区二区| 欧美一二三四区在线| 亚洲免费av观看| 懂色av一区二区三区蜜臀| 91精品国产aⅴ一区二区| 亚洲欧美在线另类| 国产精品1024| 日韩一二三区不卡| 亚洲午夜在线观看视频在线| 成人黄色在线视频| 2欧美一区二区三区在线观看视频| 一区av在线播放| gogo大胆日本视频一区| 久久久精品综合| 久草在线在线精品观看| 欧美日韩精品欧美日韩精品一| 国产精品乱子久久久久| 国产精品一区二区三区四区| 欧美一区二区网站| 婷婷丁香久久五月婷婷| 色综合久久天天综合网| 国产精品久久久99| 东方aⅴ免费观看久久av| 日韩精品一区国产麻豆| 日韩精品一级中文字幕精品视频免费观看| 不卡av在线网| 国产精品水嫩水嫩| 国产成人亚洲综合a∨猫咪| 亚洲精品在线免费观看视频| 日本午夜一区二区| 欧美一区二区三区在线| 天堂va蜜桃一区二区三区| 欧美亚洲日本一区| 亚洲成人高清在线| 欧美性猛交xxxx乱大交退制版 | 欧美国产精品专区| 国产伦精品一区二区三区免费| 日韩久久久精品| 另类小说图片综合网| 欧美一区二区三区视频在线观看 | 日本系列欧美系列| 制服视频三区第一页精品| 婷婷亚洲久悠悠色悠在线播放| 欧美日韩国产另类一区| 视频精品一区二区| 日韩免费观看2025年上映的电影| 日本不卡的三区四区五区| 欧美成人一区二区三区片免费| 久久99精品久久只有精品| 亚洲精品在线观看视频| 国产成人在线观看| 亚洲图片你懂的| 欧美日韩中文字幕一区| 日韩主播视频在线| 欧美电视剧免费观看| 国产高清亚洲一区| 亚洲视频 欧洲视频| 91福利国产精品| 日本欧洲一区二区| 精品福利一区二区三区| 成人激情动漫在线观看| 一区二区三区国产豹纹内裤在线| 欧美日韩精品专区| 久久福利视频一区二区| 亚洲国产精品精华液ab| 色综合一个色综合亚洲| 国产精品一品二品| 国产精品久久毛片| 欧美日韩一级黄| 国产麻豆日韩欧美久久| 亚洲欧美视频在线观看视频| 欧美日本乱大交xxxxx| 国内精品免费**视频| 亚洲国产精品成人综合色在线婷婷| 99国产欧美久久久精品| 亚洲国产成人91porn| 久久久无码精品亚洲日韩按摩| 93久久精品日日躁夜夜躁欧美| 亚洲福利视频导航| 国产欧美一区二区在线观看| 91久久线看在观草草青青| 久久电影网站中文字幕| 亚洲美女淫视频| 日韩精品一区二区三区视频播放| 成人伦理片在线| 美女网站在线免费欧美精品| 亚洲欧洲精品一区二区三区不卡| 制服丝袜亚洲网站| 91在线视频免费观看| 蜜臀av国产精品久久久久| 亚洲视频一区二区在线| 欧美成人国产一区二区| 欧美自拍偷拍一区| 国产盗摄女厕一区二区三区| 亚洲香肠在线观看| 国产精品污污网站在线观看| 5566中文字幕一区二区电影 | 欧美探花视频资源| 国产高清亚洲一区| 蜜臀av一级做a爰片久久| 一区二区三区四区在线| 欧美国产精品一区| 日韩小视频在线观看专区| 欧洲av一区二区嗯嗯嗯啊| 成人午夜激情在线|