您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ ustime函数代码示例

51自学网 2021-06-03 09:23:25
  C++
这篇教程C++ ustime函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中ustime函数的典型用法代码示例。如果您正苦于以下问题:C++ ustime函数的具体用法?C++ ustime怎么用?C++ ustime使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了ustime函数的26个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: _timer_instance

static void* _timer_instance(void *arg){        int fatal;        static int fatal_count = 0;        struct timeval timeout;        kv_timer_event_t *ev;        kv_timer_t *timer = (kv_timer_t*)arg;        assert(timer->state == KV_TIMER_STATE_LOADING);        timer->state = KV_TIMER_STATE_RUNNING;        for (;;) {                timeout.tv_sec = 0;                timeout.tv_usec = timer->interval;                /** interval is very short, ignore signal interrupt */                fatal = select(0, NULL, NULL, NULL, &timeout);                if (fatal == -1) {                        fatal_count++;                        if (fatal_count >= 3) abort();                        continue;                }                fatal_count = 0;                ev = timer->list;                while(ev) {                        if (ustime() - ev->elapse_base >= ev->timeout) {                                ev->elapse_base = ustime(); /** restart */                                ev->proc();                        }                        ev = ev->next;                }        }}
开发者ID:jianzi123,项目名称:my_libucmq,代码行数:32,


示例2: busysleep

void busysleep(int usec) {  int64_t t = ustime() + usec;  while (t > ustime()) {    ; // Nothing.  }}
开发者ID:erikdubbelboer,项目名称:erik-misc-code,代码行数:7,


示例3: do_delete_event

int do_delete_event(struct redisClient *c,sds funcname){    redisSrand48(0);    server.lua_random_dirty = 0;    server.lua_write_dirty = 0;    lua_getglobal(server.lua,(char *)funcname);    if (lua_isnil(server.lua,1)) {        addReplyError(c,"no funcname triggle_scipts in lua");        return 0;    }    luaTriggleSetGlobalArray(server.lua,"KEYS",c->argv+1,c->argc-1);    redisLog(REDIS_NOTICE,"stack: %d",lua_gettop(server.lua));#ifdef BRIDGE_DEBUG    for(int i=0;i<c->argc-1;i++){        redisLog(REDIS_NOTICE,"%s",(c->argv+1)[i]->ptr);    }#endif    selectDb(server.lua_client,c->db->id);    server.lua_time_start = ustime()/1000;    server.lua_kill = 0;    if (server.lua_time_limit > 0) {        lua_sethook(server.lua,luaMaskCountHook,LUA_MASKCOUNT,100000);        server.lua_time_start = ustime()/1000;    } else {        lua_sethook(server.lua,luaMaskCountHook,0,0);    }    if (lua_pcall(server.lua,0,1,0)) {        selectDb(c,server.lua_client->db->id);         addReplyErrorFormat(c,"Error running script (call to %s): %s/n",                (char*)funcname, lua_tostring(server.lua,-1));        lua_pop(server.lua,1);        lua_gc(server.lua,LUA_GCCOLLECT,0);        return -1;    }    selectDb(c,server.lua_client->db->id);     // luaReplyToRedisReply(c,server.lua);    server.lua_timedout = 0;    server.lua_caller = NULL;    lua_gc(server.lua,LUA_GCSTEP,1);    //for slaves    //    return 0; }
开发者ID:crestxu,项目名称:redis-triggle,代码行数:58,


示例4: pagerank_redis

// get web from redis and calculate pagerankvoid pagerank_redis(redisContext **conts, float v_quadratic_error, web* w) {	redisContext *c = conts[0];	redisReply *reply;	long long t_start;	long long t_end;	unsigned int i;	float q = 1;		printf("Start PageRank from redis: /n");	printf("Damping factor: %f/n", g_damping_factor);	printf("Quadratic error range: %f/n", v_quadratic_error);	printf("----------------------------------/n");	reply = redisCommand(c, "GET next.uid");	if (reply->str == NULL)		die("Cannot not find data in redis!");	unsigned long user_num = atol(reply->str) + 1;	printf("user num: %ld/n", user_num);	freeReplyObject(reply);		t_start = ustime();	if (w->size == 0) {		for (i = 0; i < g_n_sharded; ++i) {			reply = redisCommand(conts[i], "DEL newly.edited.linkto");			freeReplyObject(reply);			reply = redisCommand(conts[i], "DEL newly.edited.linkfrom");			freeReplyObject(reply);		}		web_init(w, user_num);		gen_web_sharded_redis(conts, w, 0);	} else {		size_t origin_size = w->size;		web_init_from_oldweb(w, user_num);		printf("web expansion fin...");		update_web_sharded_redis(conts, w);		printf("web update fin.../n");		//printf("origin dangpage size: %zd/n", w->dangling_pages->size);		update_dangling_pages(w, origin_size);		//printf("updated dangpage size: %zd/n", w->dangling_pages->size);	}		printf("dangling user size: %zd/n", w->dangling_pages->size);	t_end = ustime();	printf("init: %lf seconds/n", getruntime(t_end, t_start));	t_start = ustime();	for (i = 1; q > v_quadratic_error; ++i) {		q = calculate_pagerank_parallel(w);		//printf("iteration %d deviate value: %f/n", i, q);		//web_display_pagerank(w);	}	t_end = ustime();	printf("calculate: %lf seconds(%d iterations)/n", getruntime(t_end, t_start), i - 1);}
开发者ID:markzhai,项目名称:PageRank-on-weibo-user-connection,代码行数:55,


示例5: call

/* Call() is the core of  execution of a command */static void call(ugClient *c, int flags) {    long long start = ustime(), duration;    /* Call the command. */    c->cmd->proc(c);    duration = ustime()-start;    c->cmd->microseconds += duration;    c->cmd->calls++;}
开发者ID:cinience,项目名称:saker,代码行数:12,


示例6: rewriteAppendOnlyFileBackground

/* This is how rewriting of the append only file in background works: * * 1) The user calls BGREWRITEAOF * 2) Redis calls this function, that forks(): *    2a) the child rewrite the append only file in a temp file. *    2b) the parent accumulates differences in server.aof_rewrite_buf. * 3) When the child finished '2a' exists. * 4) The parent will trap the exit code, if it's OK, will append the *    data accumulated into server.aof_rewrite_buf into the temp file, and *    finally will rename(2) the temp file in the actual file name. *    The the new file is reopened as the new append only file. Profit! */int rewriteAppendOnlyFileBackground(void) {    pid_t childpid;    long long start;    if (server.aof_child_pid != -1) return REDIS_ERR;    start = ustime();    if ((childpid = fork()) == 0) {        char tmpfile[256];        /* Child */        closeListeningSockets(0);        redisSetProcTitle("redis-aof-rewrite");        snprintf(tmpfile,256,"temp-rewriteaof-bg-%d.aof", (int) getpid());        if (rewriteAppendOnlyFile(tmpfile) == REDIS_OK) {            size_t private_dirty = zmalloc_get_private_dirty();            if (private_dirty) {                redisLog(REDIS_NOTICE,                    "AOF rewrite: %zu MB of memory used by copy-on-write",                    private_dirty/(1024*1024));            }            exitFromChild(0);        } else {            exitFromChild(1);        }    } else {        /* Parent */        server.stat_fork_time = ustime()-start;        server.stat_fork_rate = (double) zmalloc_used_memory() * 1000000 / server.stat_fork_time / (1024*1024*1024); /* GB per second. */        latencyAddSampleIfNeeded("fork",server.stat_fork_time/1000);        if (childpid == -1) {            redisLog(REDIS_WARNING,                "Can't rewrite append only file in background: fork: %s",                strerror(errno));            return REDIS_ERR;        }        redisLog(REDIS_NOTICE,            "Background append only file rewriting started by pid %d",childpid);        server.aof_rewrite_scheduled = 0;        server.aof_rewrite_time_start = time(NULL);        server.aof_child_pid = childpid;        updateDictResizePolicy();        /* We set appendseldb to -1 in order to force the next call to the         * feedAppendOnlyFile() to issue a SELECT command, so the differences         * accumulated by the parent into server.aof_rewrite_buf will start         * with a SELECT statement and it will be safe to merge. */        server.aof_selected_db = -1;        replicationScriptCacheFlush();        return REDIS_OK;    }    return REDIS_OK; /* unreached */}
开发者ID:kamparo,项目名称:tweet,代码行数:64,


示例7: luaMaskCountHook

/* * 脚本超时钩子 */void luaMaskCountHook(lua_State *lua, lua_Debug *ar){    long long elapsed;    REDIS_NOTUSED(ar);    REDIS_NOTUSED(lua);    // 计算已执行时间    elapsed = (ustime()/1000) - server.lua_time_start;    if (elapsed >= server.lua_time_limit && server.lua_timedout == 0)    {        redisLog(REDIS_WARNING,"Lua slow script detected: still in execution after %lld milliseconds. You can try killing the script using the SCRIPT KILL command.",elapsed);        // 已超时        server.lua_timedout = 1;        /* Once the script timeouts we reenter the event loop to permit others         * to call SCRIPT KILL or SHUTDOWN NOSAVE if needed. For this reason         * we need to mask the client executing the script from the event loop.         * If we don't do that the client may disconnect and could no longer be         * here when the EVAL command will return. */        // 当脚本运行超时时,将正在执行的客户端从读事件中移除        // 并允许其他客户端执行 SCRIPT KILL 或者 SHUTDOWN NOSAVE        aeDeleteFileEvent(server.el, server.lua_caller->fd, AE_READABLE);    }    if (server.lua_timedout)        // 在脚本上下文中,启动文件事件处理(等待 SCRIPT KILL 或 SHUTDOWN NOSAVE)        aeProcessEvents(server.el, AE_FILE_EVENTS|AE_DONT_WAIT);    if (server.lua_kill)    {        // 杀死脚本        redisLog(REDIS_WARNING,"Lua script killed by user with SCRIPT KILL.");        lua_pushstring(lua,"Script killed by user with SCRIPT KILL...");        lua_error(lua);    }}
开发者ID:jiangguang5201314,项目名称:ZNginx,代码行数:36,


示例8: write_handler

static void write_handler(ae_event_loop *el, int fd, void *priv, int mask) {    client *c = (client *)priv;    /* Initialize request when nothing was written. */    if (c->written == 0) {        if (conf.requests_issued++ >= conf.requests) {            free_client(c);            return;        }        c->start = ustime();        c->latency = -1;    }    if (sdslen(c->obuf) > c->written) {        char *ptr = c->obuf + c->written;        int nwritten = write(c->fd, ptr, sdslen(c->obuf) - c->written);        if (nwritten == -1) {            if (errno != EPIPE) {                fprintf(stderr, "write failed:%s/n", strerror(errno));            }            free_client(c);            return;        }        c->written += nwritten;        if (sdslen(c->obuf) == c->written) {            ae_delete_file_event(conf.el, c->fd, AE_WRITABLE);            ae_create_file_event(conf.el, c->fd,                     AE_READABLE, read_handler, c);        }    }}
开发者ID:flygoast,项目名称:verben,代码行数:34,


示例9: luaMaskCountHook

// 判断超时,并作超时的处理void luaMaskCountHook(lua_State *lua, lua_Debug *ar) {    long long elapsed;    REDIS_NOTUSED(ar);    REDIS_NOTUSED(lua);    // 计算已经超时的时间    elapsed = (ustime()/1000) - server.lua_time_start;    if (elapsed >= server.lua_time_limit && server.lua_timedout == 0) {        redisLog(REDIS_WARNING,"Lua slow script detected: still in execution after %lld milliseconds. You can try killing the script using the SCRIPT KILL command.",elapsed);        server.lua_timedout = 1;        // 超时了,关闭监听发送 lua 脚本命令的客户端        /* Once the script timeouts we reenter the event loop to permit others         * to call SCRIPT KILL or SHUTDOWN NOSAVE if needed. For this reason         * we need to mask the client executing the script from the event loop.         * If we don't do that the client may disconnect and could no longer be         * here when the EVAL command will return. */         aeDeleteFileEvent(server.el, server.lua_caller->fd, AE_READABLE);    }    // lua 脚本执行超时,redis 会检测对否有其他客户端会发送 SCRIPT KILL 命令    // 尝试终结这个脚本的执行    if (server.lua_timedout)        aeProcessEvents(server.el, AE_FILE_EVENTS|AE_DONT_WAIT);    // 如果 lua 脚本被停止了,强制产生错误,结束 lua    if (server.lua_kill) {        redisLog(REDIS_WARNING,"Lua script killed by user with SCRIPT KILL.");        lua_pushstring(lua,"Script killed by user with SCRIPT KILL...");        lua_error(lua);    }}
开发者ID:daoluan,项目名称:decode-redis-2.8,代码行数:33,


示例10: readHandler

static void readHandler(aeEventLoop *el, int fd, void *privdata, int mask) {    client c = privdata;    void *reply = NULL;    REDIS_NOTUSED(el);    REDIS_NOTUSED(fd);    REDIS_NOTUSED(mask);    /* Calculate latency only for the first read event. This means that the     * server already sent the reply and we need to parse it. Parsing overhead     * is not part of the latency, so calculate it only once, here. */    if (c->latency < 0) c->latency = ustime()-(c->start);    if (redisBufferRead(c->context) != REDIS_OK) {        fprintf(stderr,"Error: %s/n",c->context->errstr);        exit(1);    } else {        if (redisGetReply(c->context,&reply) != REDIS_OK) {            fprintf(stderr,"Error: %s/n",c->context->errstr);            exit(1);        }        if (reply != NULL) {            if (reply == (void*)REDIS_REPLY_ERROR) {                fprintf(stderr,"Unexpected error reply, exiting.../n");                exit(1);            }            if (config.requests_finished < config.requests)                config.latency[config.requests_finished++] = c->latency;            clientDone(c);        }    }}
开发者ID:ambakshi,项目名称:redis,代码行数:32,


示例11: ustime

/* convert a linked list encoding to a list array encoding */robj *cowListCopy(robj *val) {    long long sttime;    robj *newval;    sttime = ustime();    if (val->encoding == REDIS_ENCODING_ZIPLIST) {        size_t bytes;        redisLog(REDIS_NOTICE, "cowListCopy REDIS_ENCODING_ZIPLIST");        newval = createZiplistObject();        /* do raw memory copy */        bytes = ziplistBlobLen(val->ptr);        newval->ptr = zrealloc(newval->ptr, bytes);        memcpy(newval->ptr, val->ptr, bytes);        return newval;    } else if (val->encoding == REDIS_ENCODING_LINKEDLIST) {        list *list = val->ptr;        cowListArray *lar;        redisLog(REDIS_NOTICE, "cowListCopy REDIS_ENCODING_LINKEDLIST");        lar = cowConvertListToArray(list);        newval = createObject(REDIS_LIST, lar);        newval->encoding = REDIS_ENCODING_LINKEDLISTARRAY;        return newval;    } else {        /* error. unexpected encoding */        return NULL;    }}
开发者ID:lrascao,项目名称:redis,代码行数:30,


示例12: cowEnsureExpiresCopy

/* if copy on write active, then ensure there is a   copy of the value that is safe to modify or delete,   and update DB dict entry to refer to this value*/void cowEnsureExpiresCopy(redisDb *db) {    long long sttime;    if (server.isBackgroundSaving == 0 ||        server.cowDictCopied == NULL ||        server.cowSaveDb[db->id].expires == NULL) {        /* no copy needed */        return;    } else {        /* ensure DB expires is copied */        if (server.cowSaveDb[db->id].expires == server.db[db->id].expires) {            sttime = ustime();            server.db[db->id].expires = copyonwrite_dictobj(server.cowSaveDb[db->id].expires, NULL);            redisLog(REDIS_NOTICE, "elapsed COW DB expires time %d", (unsigned int)(ustime() - sttime));        }    }}
开发者ID:lrascao,项目名称:redis,代码行数:20,


示例13: readHandler

static void readHandler(aeEventLoop *el, int fd, void *privdata, int mask) {    client c = privdata;    void *reply = NULL;    REDIS_NOTUSED(el);    REDIS_NOTUSED(fd);    REDIS_NOTUSED(mask);    /* Calculate latency only for the first read event. This means that the     * server already sent the reply and we need to parse it. Parsing overhead     * is not part of the latency, so calculate it only once, here. */    if (c->latency < 0) c->latency = ustime()-(c->start);    if (redisBufferRead(c->context) != REDIS_OK) {        fprintf(stderr,"Error: %s/n",c->context->errstr);        exit(1);    } else {        while(c->pending) {            if (redisGetReply(c->context,&reply) != REDIS_OK) {                fprintf(stderr,"Error: %s/n",c->context->errstr);                exit(1);            }            if (reply != NULL) {                if (reply == (void*)REDIS_REPLY_ERROR) {                    fprintf(stderr,"Unexpected error reply, exiting.../n");                    exit(1);                }                freeReplyObject(reply);                /* This is an OK for prefix commands such as auth and select.*/                if (c->prefix_pending > 0) {                    c->prefix_pending--;                    c->pending--;                    /* Discard prefix commands on first response.*/                    if (c->prefixlen > 0) {                        size_t j;                        sdsrange(c->obuf, c->prefixlen, -1);                        /* We also need to fix the pointers to the strings                        * we need to randomize. */                        for (j = 0; j < c->randlen; j++)                            c->randptr[j] -= c->prefixlen;                        c->prefixlen = 0;                    }                    continue;                                }                if (config.requests_finished < config.requests)                    config.latency[config.requests_finished++] = c->latency;                c->pending--;                if (c->pending == 0) {                    clientDone(c);                    break;                }            } else {                break;            }        }    }}
开发者ID:0x-Jin,项目名称:toolforspider,代码行数:58,


示例14: init_per_lcore

static voidinit_per_lcore() {    lcore_conf_t *qconf;    unsigned lcore_id = rte_lcore_id();    qconf = &sk.lcore_conf[lcore_id];    qconf->tsc_hz = rte_get_tsc_hz();    qconf->start_us = (uint64_t )ustime();    qconf->start_tsc = rte_rdtsc();}
开发者ID:liweiwei05,项目名称:shuke,代码行数:9,


示例15: rewriteAppendOnlyFileBackground

/* This is how rewriting of the append only file in background works: * * 1) The user calls BGREWRITEAOF * 2) Redis calls this function, that forks(): *    2a) the child rewrite the append only file in a temp file. *    2b) the parent accumulates differences in server.bgrewritebuf. * 3) When the child finished '2a' exists. * 4) The parent will trap the exit code, if it's OK, will append the *    data accumulated into server.bgrewritebuf into the temp file, and *    finally will rename(2) the temp file in the actual file name. *    The the new file is reopened as the new append only file. Profit! */int rewriteAppendOnlyFileBackground(void) {    pid_t childpid;    long long start;    if (server.bgrewritechildpid != -1) return REDIS_ERR;    if (server.vm_enabled) waitEmptyIOJobsQueue();    start = ustime();    if ((childpid = fork()) == 0) {        char tmpfile[256];        /* Child */        if (server.vm_enabled) vmReopenSwapFile();        if (server.ipfd > 0) close(server.ipfd);        if (server.sofd > 0) close(server.sofd);        snprintf(tmpfile,256,"temp-rewriteaof-bg-%d.aof", (int) getpid());        if (rewriteAppendOnlyFile(tmpfile) == REDIS_OK) {            _exit(0);        } else {            _exit(1);        }    } else {        /* Parent */        server.stat_fork_time = ustime()-start;        if (childpid == -1) {            redisLog(REDIS_WARNING,                "Can't rewrite append only file in background: fork: %s",                strerror(errno));            return REDIS_ERR;        }        redisLog(REDIS_NOTICE,            "Background append only file rewriting started by pid %d",childpid);        server.aofrewrite_scheduled = 0;        server.bgrewritechildpid = childpid;        updateDictResizePolicy();        /* We set appendseldb to -1 in order to force the next call to the         * feedAppendOnlyFile() to issue a SELECT command, so the differences         * accumulated by the parent into server.bgrewritebuf will start         * with a SELECT statement and it will be safe to merge. */        server.appendseldb = -1;        return REDIS_OK;    }    return REDIS_OK; /* unreached */}
开发者ID:BoTreeConsulting,项目名称:multiple_login,代码行数:55,


示例16: kv_timer_add

void kv_timer_add(kv_timer_t *timer, long long usec, timer_proc proc){        kv_timer_event_t *te;        te = zmalloc(sizeof(*te));        te->timeout = usec < 0 ? -usec : usec;        te->elapse_base = ustime();        te->proc = proc;        te->next = 0;                if (!timer->list) {                timer->list = te;        } else {                te->next = timer->list;                timer->list = te;        }}
开发者ID:jianzi123,项目名称:my_libucmq,代码行数:17,


示例17: writeHandler

static void writeHandler(aeEventLoop *el, int fd, void *privdata, int mask) {    client c = privdata;    REDIS_NOTUSED(el);    REDIS_NOTUSED(fd);    REDIS_NOTUSED(mask);    /* Initialize request when nothing was written. */    if (c->written == 0) {        /* Enforce upper bound to number of requests. */        if (config.requests_issued++ >= config.requests) {            freeClient(c);            return;        }        /* Really initialize: randomize keys and set start time. */        if (config.randomkeys) randomizeClientKey(c);        c->start = ustime();        c->latency = -1;    }    if (sdslen(c->obuf) > c->written) {        void *ptr = c->obuf+c->written;#ifdef _WIN32        int nwritten = send(c->context->fd,ptr,sdslen(c->obuf)-c->written, 0);#else        int nwritten = write(c->context->fd,ptr,sdslen(c->obuf)-c->written);#endif        if (nwritten == -1) {            if (errno != EPIPE)                fprintf(stderr, "Writing to socket: %s/n", strerror(errno));            freeClient(c);            return;        }        c->written += nwritten;        if (sdslen(c->obuf) == c->written) {            aeDeleteFileEvent(config.el,c->context->fd,AE_WRITABLE);            aeCreateFileEvent(config.el,c->context->fd,AE_READABLE,readHandler,c);        }    }}
开发者ID:ambakshi,项目名称:redis,代码行数:40,


示例18: read_handler

static void read_handler(ae_event_loop *el, int fd, void *priv, int mask) {    client *c = (client *)priv;    int nread;    char buffer[4096];    nread = read(fd, buffer, 4096);    if (nread == -1) {        if (errno == EAGAIN) {            return;        }        fprintf(stderr, "Error: %s/n", strerror(errno));        exit(1);    } else if (nread == 0) {        fprintf(stderr, "Error: %s/n", "Server close connection.");        exit(1);    }        c->read += nread;    if (c->read == sdslen(c->obuf)) {        c->latency = ustime() - c->start;        ++conf.requests_finished;        client_done(c);    }}
开发者ID:flygoast,项目名称:verben,代码行数:24,


示例19: test_splinlock_speed

static void test_splinlock_speed() {  spinlock_init(&simple_spin);  ticketlock_init(&simple_ticket);  pthread_t threads[10];  printf("spinlock speed test (lock):/n");  for (int num = 1; num <= 16; num *= 2) {    printf("%2d threads: ", num);    fflush(stdout);    spinlock_lock(&simple_spin);    for (int t = 0; t < num; ++t) {      pthread_create(&threads[t], 0, simple_spinlock, 0);    }        int64_t start = ustime();    spinlock_unlock(&simple_spin);    for (int t = 0; t < num; ++t) {      pthread_join(threads[t], 0);    }    int64_t end = ustime();    printf("%6ld milliseconds/n", (end - start) / 1000);  }    printf("spinlock speed test (yieldock):/n");    for (int num = 1; num <= 16; num *= 2) {    printf("%2d threads: ", num);    fflush(stdout);    spinlock_lock(&simple_spin);    for (int t = 0; t < num; ++t) {      pthread_create(&threads[t], 0, simple_spinlock_yield, 0);    }        int64_t start = ustime();    spinlock_unlock(&simple_spin);    for (int t = 0; t < num; ++t) {      pthread_join(threads[t], 0);    }    int64_t end = ustime();    printf("%6ld milliseconds/n", (end - start) / 1000);  }    printf("ticketlock speed test (lock):/n");    for (int num = 1; num <= 8; num *= 2) {    printf("%2d threads: ", num);    fflush(stdout);    ticketlock_lock(&simple_ticket);    for (int t = 0; t < num; ++t) {      pthread_create(&threads[t], 0, simple_ticketlock, 0);    }        int64_t start = ustime();    ticketlock_unlock(&simple_ticket);    for (int t = 0; t < num; ++t) {      pthread_join(threads[t], 0);    }    int64_t end = ustime();    printf("%6ld milliseconds/n", (end - start) / 1000);  }    printf("ticketlock speed test (yieldlock):/n");    for (int num = 1; num <= 8; num *= 2) {    printf("%2d threads: ", num);    fflush(stdout);    ticketlock_lock(&simple_ticket);    for (int t = 0; t < num; ++t) {      pthread_create(&threads[t], 0, simple_ticketlock_yield, 0);    }        int64_t start = ustime();    ticketlock_unlock(&simple_ticket);    for (int t = 0; t < num; ++t) {      pthread_join(threads[t], 0);    }//.........这里部分代码省略.........
开发者ID:erikdubbelboer,项目名称:erik-misc-code,代码行数:101,


示例20: triggle_event

int triggle_event(struct redisClient *c,sds funcname){    redisSrand48(0);    server.lua_random_dirty = 0;    server.lua_write_dirty = 0;        //redisLog(REDIS_NOTICE,"step into stack: %d",lua_gettop(server.lua));    lua_getglobal(server.lua,funcname);    if (lua_isnil(server.lua,1)) {        lua_pop(server.lua,1); /* remove the nil from the stack */        redisLog(REDIS_NOTICE,"no funcname triggle_scipts in lua");        struct dictEntry *de = dictFind(server.bridge_db.triggle_scipts[c->db->id],funcname);        if(de)        {            struct bridge_db_triggle_t * tmptrg=dictGetVal(de);            if (luatriggleCreateFunction(server.lua,funcname,tmptrg->lua_scripts) == REDIS_ERR) return -1;            /* Now the following is guaranteed to return non nil */            lua_getglobal(server.lua, funcname);            redisAssert(!lua_isnil(server.lua,1));        }        else        {            redisLog(REDIS_WARNING,"triggle not found");            return -1;        }    }    luaTriggleSetGlobalArray(server.lua,"KEYS",c->argv,c->argc);   // redisLog(REDIS_NOTICE,"stack: %d",lua_gettop(server.lua));/*    for(int i=0;i<c->argc;i++){        redisLog(REDIS_NOTICE,"%s",c->argv[i]->ptr);    }*/    /* Select the right DB in the context of the Lua client */    selectDb(server.lua_client,c->db->id);    server.lua_time_start = ustime()/1000;    server.lua_kill = 0;    if (server.lua_time_limit > 0) {        lua_sethook(server.lua,luaMaskCountHook,LUA_MASKCOUNT,100000);        server.lua_time_start = ustime()/1000;    } else {        lua_sethook(server.lua,luaMaskCountHook,0,0);    }    /* At this point whatever this script was never seen before or if it was     * already defined, we can call it. We have zero arguments and expect     * a single return value. */    if (lua_pcall(server.lua,0,1,0)) {        selectDb(c,server.lua_client->db->id); /* set DB ID from Lua client */        redisLog(REDIS_WARNING,"Error running script (call to %s): %s/n",                (char*)funcname, lua_tostring(server.lua,-1));        lua_pop(server.lua,1);        lua_gc(server.lua,LUA_GCCOLLECT,0);        return -1;    }    selectDb(c,server.lua_client->db->id); /* set DB ID from Lua client */    // luaReplyToRedisReply(c,server.lua);    lua_pop(server.lua,1);    server.lua_timedout = 0;    server.lua_caller = NULL;    lua_gc(server.lua,LUA_GCSTEP,1); //   redisLog(REDIS_NOTICE,"after stack: %d",lua_gettop(server.lua));    //for slaves    //    return 0; }
开发者ID:crestxu,项目名称:redis-triggle,代码行数:85,


示例21: triggle_expire_event

int triggle_expire_event(redisDb *db,sds funcname,robj *key){    redisSrand48(0);    server.lua_random_dirty = 0;    server.lua_write_dirty = 0;    lua_getglobal(server.lua,funcname);    if (lua_isnil(server.lua,1)) {        lua_pop(server.lua,1); /* remove the nil from the stack */        redisLog(REDIS_NOTICE,"no funcname triggle_scipts in lua");        struct dictEntry *de = dictFind(server.bridge_db.triggle_scipts[db->id],funcname);        if(de)        {            struct bridge_db_triggle_t * tmptrg=dictGetVal(de);            if (luatriggleCreateFunction(server.lua,funcname,tmptrg->lua_scripts) == REDIS_ERR) return -1;            /* Now the following is guaranteed to return non nil */            lua_getglobal(server.lua, funcname);            redisAssert(!lua_isnil(server.lua,1));        }        else        {            redisLog(REDIS_WARNING,"triggle not found");            return -1;        }    }    luaTriggleSetGlobalArray(server.lua,"KEYS",&key,1);    server.lua_time_start = ustime()/1000;    server.lua_kill = 0;    if (server.lua_time_limit > 0) {        lua_sethook(server.lua,luaMaskCountHook,LUA_MASKCOUNT,100000);        server.lua_time_start = ustime()/1000;    } else {        lua_sethook(server.lua,luaMaskCountHook,0,0);    }    /* At this point whatever this script was never seen before or if it was     * already defined, we can call it. We have zero arguments and expect     * a single return value. */    if (lua_pcall(server.lua,0,1,0)) {        //selectDb(c,server.lua_client->db->id); /* set DB ID from Lua client */        redisLog(REDIS_WARNING,"exec the script error:%s",lua_tostring(server.lua,-1));        lua_pop(server.lua,1);        lua_gc(server.lua,LUA_GCCOLLECT,0);        return -1;    }    //selectDb(c,server.lua_client->db->id); /* set DB ID from Lua client */    server.lua_timedout = 0;    server.lua_caller = NULL;        lua_pop(server.lua,1);    lua_gc(server.lua,LUA_GCSTEP,1);    return 0; }
开发者ID:crestxu,项目名称:redis-triggle,代码行数:70,


示例22: evalGenericCommand

//.........这里部分代码省略.........            addReply(c, shared.noscripterr);            return;        }        // 如果执行的是 EVAL ,那么创建并执行新函数,然后将代码添加到脚本字典中        if (luaCreateFunction(c,lua,funcname,c->argv[1]) == REDIS_ERR) return;        /* Now the following is guaranteed to return non nil */        lua_getglobal(lua, funcname);        redisAssert(!lua_isnil(lua,1));    }    /* Populate the argv and keys table accordingly to the arguments that     * EVAL received. */    // 设置 KEYS 和 ARGV 全局变量到 Lua 环境    luaSetGlobalArray(lua,"KEYS",c->argv+3,numkeys);    luaSetGlobalArray(lua,"ARGV",c->argv+3+numkeys,c->argc-3-numkeys);    /* Select the right DB in the context of the Lua client */    // 为 Lua 所属的(伪)客户端设置数据库    selectDb(server.lua_client,c->db->id);    /* Set an hook in order to be able to stop the script execution if it     * is running for too much time.     *     * 设置一个钩子,用于在运行时间过长时停止脚本的运作。     *     * We set the hook only if the time limit is enabled as the hook will     * make the Lua script execution slower.     *     * 只在开启了时间限制选项时使用钩子,因为它会拖慢脚本的运行速度。     */    // 调用客户端    server.lua_caller = c;    // 脚本开始时间    server.lua_time_start = ustime()/1000;    // 是否杀死脚本    server.lua_kill = 0;    // 只在开启时间限制时使用钩子    if (server.lua_time_limit > 0 && server.masterhost == NULL)    {        lua_sethook(lua,luaMaskCountHook,LUA_MASKCOUNT,100000);        delhook = 1;    }    /* At this point whatever this script was never seen before or if it was     * already defined, we can call it. We have zero arguments and expect     * a single return value. */    // 执行脚本(所属的函数)    if (lua_pcall(lua,0,1,0))    {        // 以下是脚本执行出错的代码。。。        // 删除钩子        if (delhook) lua_sethook(lua,luaMaskCountHook,0,0); /* Disable hook */        // 脚本执行已超时        if (server.lua_timedout)        {            // 清除超时 FLAG            server.lua_timedout = 0;            /* Restore the readable handler that was unregistered when the             * script timeout was detected. */            // 将超时钩子里删除的读事件重新加上            aeCreateFileEvent(server.el,c->fd,AE_READABLE,                              readQueryFromClient,c);        }
开发者ID:jiangguang5201314,项目名称:ZNginx,代码行数:67,


示例23: evalGenericCommand

void evalGenericCommand(redisClient *c, int evalsha) {    lua_State *lua = server.lua;    char funcname[43];    long long numkeys;    int delhook = 0, err;    /* We want the same PRNG sequence at every call so that our PRNG is     * not affected by external state. */    redisSrand48(0);    /* We set this flag to zero to remember that so far no random command     * was called. This way we can allow the user to call commands like     * SRANDMEMBER or RANDOMKEY from Lua scripts as far as no write command     * is called (otherwise the replication and AOF would end with non     * deterministic sequences).     *     * Thanks to this flag we'll raise an error every time a write command     * is called after a random command was used. */    server.lua_random_dirty = 0;    server.lua_write_dirty = 0;    /* Get the number of arguments that are keys */    if (getLongLongFromObjectOrReply(c,c->argv[2],&numkeys,NULL) != REDIS_OK)        return;    if (numkeys > (c->argc - 3)) {        addReplyError(c,"Number of keys can't be greater than number of args");        return;    }    /* We obtain the script SHA1, then check if this function is already     * defined into the Lua state */    funcname[0] = 'f';    funcname[1] = '_';    if (!evalsha) {        /* Hash the code if this is an EVAL call */        sha1hex(funcname+2,c->argv[1]->ptr,sdslen(c->argv[1]->ptr));    } else {        /* We already have the SHA if it is a EVALSHA */        int j;        char *sha = c->argv[1]->ptr;        for (j = 0; j < 40; j++)            funcname[j+2] = tolower(sha[j]);        funcname[42] = '/0';    }    /* Push the pcall error handler function on the stack. */    lua_getglobal(lua, "__redis__err__handler");    /* Try to lookup the Lua function */    lua_getglobal(lua, funcname);    if (lua_isnil(lua,-1)) {        lua_pop(lua,1); /* remove the nil from the stack */        /* Function not defined... let's define it if we have the         * body of the function. If this is an EVALSHA call we can just         * return an error. */        if (evalsha) {            lua_pop(lua,1); /* remove the error handler from the stack. */            addReply(c, shared.noscripterr);            return;        }        if (luaCreateFunction(c,lua,funcname,c->argv[1]) == REDIS_ERR) return;        /* Now the following is guaranteed to return non nil */        lua_getglobal(lua, funcname);        redisAssert(!lua_isnil(lua,-1));    }    /* Populate the argv and keys table accordingly to the arguments that     * EVAL received. */    luaSetGlobalArray(lua,"KEYS",c->argv+3,numkeys);    luaSetGlobalArray(lua,"ARGV",c->argv+3+numkeys,c->argc-3-numkeys);    /* Select the right DB in the context of the Lua client */    selectDb(server.lua_client,c->db->id);        /* Set an hook in order to be able to stop the script execution if it     * is running for too much time.     * We set the hook only if the time limit is enabled as the hook will     * make the Lua script execution slower. */    server.lua_caller = c;    server.lua_time_start = ustime()/1000;    server.lua_kill = 0;    if (server.lua_time_limit > 0 && server.masterhost == NULL) {        lua_sethook(lua,luaMaskCountHook,LUA_MASKCOUNT,100000);        delhook = 1;    }    /* At this point whether this script was never seen before or if it was     * already defined, we can call it. We have zero arguments and expect     * a single return value. */    err = lua_pcall(lua,0,1,-2);    /* Perform some cleanup that we need to do both on error and success. */    if (delhook) lua_sethook(lua,luaMaskCountHook,0,0); /* Disable hook */    if (server.lua_timedout) {        server.lua_timedout = 0;        /* Restore the readable handler that was unregistered when the         * script timeout was detected. */        aeCreateFileEvent(server.el,c->fd,AE_READABLE,//.........这里部分代码省略.........
开发者ID:Whitespace,项目名称:redis,代码行数:101,


示例24: mstime

/* Return the UNIX time in milliseconds */long long mstime(void) {    return ustime()/1000;}
开发者ID:r043v,项目名称:load81,代码行数:4,


示例25: main

int main(int argc, char *argv[]) {    printf("Second:%d, Millisecond:%lld, Microsecond:%lld/n",        time(NULL), mstime(), ustime());    exit(0);}
开发者ID:flygoast,项目名称:fnsproxy,代码行数:5,


示例26: evalGenericCommand

//.........这里部分代码省略.........        // 创建 lua 函数 funcname        // c->argv[1] 指向用户指定的 lua 脚本        if (luaCreateFunction(c,lua,funcname,c->argv[1]) == REDIS_ERR) {            lua_pop(lua,1); /* remove the error handler from the stack. */            /* The error is sent to the client by luaCreateFunction()             * itself when it returns REDIS_ERR. */            return;        }        // 现在 lua 中已经有 funcname 这个全局变量了,将其读取并入栈,        // 准备调用        /* Now the following is guaranteed to return non nil */        lua_getglobal(lua, funcname);        redisAssert(!lua_isnil(lua,-1));    }    // 设置参数,包括键和值    /* Populate the argv and keys table accordingly to the arguments that     * EVAL received. */    luaSetGlobalArray(lua,"KEYS",c->argv+3,numkeys);    luaSetGlobalArray(lua,"ARGV",c->argv+3+numkeys,c->argc-3-numkeys);    // 选择数据集,lua_client 有专用的数据集    /* Select the right DB in the context of the Lua client */    selectDb(server.lua_client,c->db->id);    // 设置超时回调函数,以在 lua 脚本执行过长时间的时候停止脚本的运行    /* Set a hook in order to be able to stop the script execution if it     * is running for too much time.     * We set the hook only if the time limit is enabled as the hook will     * make the Lua script execution slower. */    server.lua_caller = c;    server.lua_time_start = ustime()/1000;    server.lua_kill = 0;    if (server.lua_time_limit > 0 && server.masterhost == NULL) {        // 当 lua 解释器执行了 100000,luaMaskCountHook() 会被调用        lua_sethook(lua,luaMaskCountHook,LUA_MASKCOUNT,100000);        delhook = 1;    }    // 现在,我们确定函数已经注册成功了.可以直接调用 lua 脚本    /* At this point whether this script was never seen before or if it was     * already defined, we can call it. We have zero arguments and expect     * a single return value. */    err = lua_pcall(lua,0,1,-2);    // 删除超时回调函数    /* Perform some cleanup that we need to do both on error and success. */    if (delhook) lua_sethook(lua,luaMaskCountHook,0,0); /* Disable hook */    // 如果已经超时了,说明 lua 脚本已在超时后背 SCRPIT KILL 终结了    // 恢复监听发送 lua 脚本命令的客户端    if (server.lua_timedout) {        server.lua_timedout = 0;        /* Restore the readable handler that was unregistered when the         * script timeout was detected. */        aeCreateFileEvent(server.el,c->fd,AE_READABLE,                          readQueryFromClient,c);    }    // lua_caller 置空    server.lua_caller = NULL;    // 执行 lua 脚本用的是 lua 脚本执行专用的数据集。现在恢复原有的数据集    selectDb(c,server.lua_client->db->id); /* set DB ID from Lua client */
开发者ID:daoluan,项目名称:decode-redis-2.8,代码行数:66,



注:本文中的ustime函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ ustrcpy函数代码示例
C++ usnprintf函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。