⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysync.cpp

📁 是socket的功能包
💻 CPP
字号:
#include<iostream>#include<pthread.h>#include<unistd.h>#include<stdio.h>#include<sys/time.h>#include<errno.h>#include"../include/mysync.h"MyMutex::MyMutex(){	error = pthread_mutex_init(&a_mutex, NULL);}MyMutex::~MyMutex(){	error = pthread_mutex_destroy(&a_mutex);}MyCondition::MyCondition(){	error = pthread_cond_init(&got_request, NULL);	error += pthread_mutex_init(&a_mutex, NULL);}MyCondition::~MyCondition(){	error = pthread_mutex_destroy(&a_mutex);	int rc = pthread_cond_destroy(&got_request);	while (rc == EBUSY)	{		sleep(1);	}	error = error + rc;}int MyCondition::Wait(int second){	struct timeval now;	struct timespec timeout;	int done;	int rc = pthread_mutex_lock(&a_mutex);	if (rc)	{		perror("pthread_mutex_lcok");		pthread_exit(NULL);	}	if (second)	{		gettimeofday(&now, NULL);		timeout.tv_sec = now.tv_sec + second;		timeout.tv_nsec = now.tv_usec * 1000;		error = pthread_cond_timedwait(&got_request, &a_mutex, 				               &timeout);	}	else	{		error = pthread_cond_wait(&got_request, &a_mutex);	}	pthread_mutex_unlock(&a_mutex);	switch (error)	{		case 0:			return 0;		case ETIMEDOUT:			return 1;		default:			return 2;	}}int MyCondition::Wake(){	error = pthread_cond_signal(&got_request);	return error;}int MyCondition::WakeAll(){	error = pthread_cond_broadcast(&got_request);	return error;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -