Exemple #1
0
void WorkThread::run()
{

  QString msg = QStringLiteral("运行中");
  int count = 0;

  while( /*control_status*/ true)
  {
    QString temp = msg;

    count++;

    QString temp2;
    temp2.setNum(count);

    // 发送消息
    QString msg = temp + temp2;
    emitMsg(msg);

    work_run();

    sleep(8);

  }
}
Exemple #2
0
static void* readerfunc(void *p) {
    pthread_barrier_wait(&start);
    work_t* work = (work_t*) p;
    while (!done) {
        pthread_rwlock_rdlock(&rwlock);
        if (!done) {
            work_run(work, MICROS_PER_SECOND);
        }
        pthread_rwlock_unlock(&rwlock);
    }
}
Exemple #3
0
static void* writerfunc(void *p) {
    pthread_barrier_wait(&start);
    work_t* work = (work_t*) p;
    while (!done) {
        pthread_rwlock_wrlock(&rwlock);
        if (!done) {
            work_run(work, MICROS_PER_SECOND / 100);
        }
        pthread_rwlock_unlock(&rwlock);
        usleep(MICROS_PER_SECOND / 10);
    }
}
Exemple #4
0
void sequential_demo(int work_count, work_t* works, int seconds_per_work) {
    PRINT("*** SEQUENTIAL DEMO ***\n\n");
    EXPLAIN("  I'm going to run %d works sequentially, one after another.\n", work_count);
    EXPLAIN("  Each work will run for %d seconds.\n\n", seconds_per_work);
    int i;
    for (i = 0; i < work_count; ++i) {
        work_explain(&works[i]);
        PAUSE("Press [Enter] to start this work...\n");
        REF("Estimated resource usage for the following %d seconds\n", seconds_per_work);
        REF("CPU usage:\n");
        REF("\tuser:   about %d%%\n", 100 * usrcpu_usage(1, &works[i]) / cpucount());
        REF("\tsystem: about %d%%\n", 100 * syscpu_usage(1, &works[i]) / cpucount());
        REF("Memory usage:\n");
        REF("\t%ld bytes\n", mem_usage(1, &works[i]));
        REF("Thread usage:\n");
        REF("\ttotal:  1\n");
        REF("\tlocked: 0\n\n");
        work_run(&works[i], seconds_per_work * MICROS_PER_SECOND);
        PRINT("\n");
    }
}
Exemple #5
0
static void* join_threadfunc(void *p) {
    pthread_barrier_wait(&start);
    work_t* work = (work_t*) p;
    work_run(work, 5 * (1 + work->id) * MICROS_PER_SECOND);
}