コード例 #1
0
ファイル: sem.cpp プロジェクト: easydaniel/OperatingSystem
int main(int argc, char* argv[]) {

	if (argc < 2) {
		cout << "Not enough args ./sem <Num of threads>" << endl;
		return 1;
	}
	sscanf(argv[1], "%d", &threadNum);
    pthread_t tid[threadNum];
    sem_init(&sem, 0, 1);
    int returnCode;
    for (int i = 0; i < threadNum; ++i) {
        cout << "In main: Creating thread " << i << endl;
        returnCode = pthread_create(&tid[i], NULL, ThreadRunner, NULL);
        if (returnCode) {
            cout << "ERROR: Return Code from pthread_create is " << returnCode << endl;
            exit(-1);
        }
    }
    for (int i = 0; i < threadNum; ++i) {
        pthread_join(tid[i], NULL);
    } 
    sem_destroy(&sem);
    x.Print();
    pthread_exit(NULL);
    return 0;
}
コード例 #2
0
ファイル: spinlock.cpp プロジェクト: allenwhale/OS
int main(){
    pthread_spin_init(&m_spinlock, 0);
    pthread_t tid[THREAD_NUM];
    for(int i=0;i<THREAD_NUM;i++)
        pthread_create(&tid[i], NULL, ThreadRunner, 0);
    for(int i=0;i<THREAD_NUM;i++)
        pthread_join(tid[i], NULL);
    x.Print();
    return 0;
}
コード例 #3
0
ファイル: mutex.cpp プロジェクト: Microsheep/NCTU_OS_2015
int main(){
    pthread_t tid[thread_num];
    int i;
    for(i=0;i<thread_num;i++){
        pthread_create(&tid[i], NULL, ThreadRunner, 0);
    }
    for(i=0;i<thread_num;i++){
        pthread_join(tid[i], NULL);
    }
    x.Print();
    return 0;
}
コード例 #4
0
ファイル: base.cpp プロジェクト: Microsheep/NCTU_OS_2015
int main(){
    pthread_t tid[3];
    int i;
    int t=100000000;
    for(i=0;i<3;i++){
        pthread_create(&tid[i], NULL, ThreadRunner, (void*) &t);
    }
    for(i=0;i<3;i++){
        pthread_join(tid[i], NULL);
    }
    x.Print();
    return 0;
}
コード例 #5
0
ファイル: sem.cpp プロジェクト: CliffYang/Operating-System
int main() {
    time_t start_time = time(0);
    pthread_t tid[THDNUM];
    sem_init(&semaphore, 0, 1);
    int i;
    for (i = 0; i < THDNUM; i++)
        pthread_create(&tid[i], NULL, ThreadRunner, 0);
    for (i = 0; i < THDNUM; i++)
        pthread_join(tid[i], NULL);
    cout << "Result = ";
    x.Print();
    cout << "duration = " << time(0) - start_time << " secs" << endl;
    return 0;
}
コード例 #6
0
ファイル: pi_lock.cpp プロジェクト: kevchentw/OS_HW2
int main() {
    srand (time(NULL));
    pthread_t tid[3];
    pthread_mutex_init (&p_mutex, NULL);
    for (int i = 0; i < 3;i++) {
        pthread_create(&tid[i], NULL, &ThreadRunner, 0);
    }

    for (int i =  0; i < 3; i++){
        pthread_join(tid[i], NULL);
    }
    pthread_mutex_destroy(&p_mutex);
    x.Print();
}