多线程 - pthread - 互斥,它有效吗?

时间:2017-07-27 15:10:37

标签: multithreading pthreads c++14 mutex

我正在使用线程运行2个功能 打印," -----"和" ########"。

我正在尝试使用互斥锁,因为我认为它应该阻止任何传入的线程,但是当我使用锁定互斥锁时它不会阻止任何传入的线程,你能看到结果(在那里)。 我很想知道mutex的作用是什么,或者是没有正常运行的互斥体。

喜欢听你的意见......谢谢:D

我正在使用GNU gcc编译器 - 从Mingw网站上下载

#include <pthread.h>
#include <mutex>
#include <iostream>

using namespace std;

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

void* print (void* e){
pthread_mutex_lock(&mutex);
    while(1){
        cout << "########" <<endl;
    }
    pthread_mutex_unlock(&mutex);
}
void* print1 (void* e){

    while(1){
        cout << "-----" <<endl;
    }
}

int main(){
    pthread_t* threads;
    threads = new pthread_t;
//------------------------------------
    pthread_t* threads1;
    threads1 = new pthread_t;
 //-------------------------------------
    pthread_create(threads,NULL,print,(void*)NULL);
    pthread_create(threads1,NULL,print1,(void*)NULL);
    getchar();
    return false;
}

// --------------------结果:

   "########" 
   "-----" 
   "########" 
   "-----" 
   "########"
   "-----"  
   "########"
   .....
   .....

使用pthread_mutex_lock我会表达类似的内容:

  "########" 
   "########" 
   "########" 
   "########"
   "########"
   "########" 
   infinit .....

0 个答案:

没有答案