文件传输项目模块2互斥与同步

#ifndef LOCKER_H
#define LOCKER_H

#include<exception>
#include<pthread.h>
#include<semaphore.h>//信号量头文件
#include<iostream>
using namespace std;

//封装信号量的类
class sem
{
public:
	//创建信号量
	sem()
	{
		if( sem_init(&m_sem, 0, 0) != 0 )//第二个参数为0表示该信号量在线程间共享,第三个参数信号量初始值为0
		{
			throw std::exception();
		}
	}

	//销毁信号量
	~sem()
	{
		sem_destroy(&m_sem);
	}

	//以下两者配合以达到线程同步的效果
	//等待信号量
	bool wait()//->p操作
	{
		return sem_wait(&m_sem) == 0; //如果信号量<=0 则sem_wait会阻塞 直到信号量值>=1 然后再进行该操作
	}

	//增加信号量
	bool post()//->v操作
	{
		return sem_post(&m_sem) == 0; //对信号量进行加1操作
	}
private:
	sem_t m_sem;
};

//封装互斥锁的类
class locker
{
public:
	//创建并初始化互斥锁
	locker()
	{
		if( pthread_mutex_init(&m_mutex, NULL) != 0) //NULL表示互斥锁属性为默认
		{
			throw std::execption();
		}
	}

	//销毁互斥锁
	~locker
	{
		pthread_mutex_destroy(&m_mutex);
	}

	//获取互斥锁
	bool lock()
	{
		return pthread_mutex_lock(&m_mutex) == 0; //获得锁, 否则会阻塞
	}

	//释放互斥锁
	bool unlock()
	{
		reutnr pthread_mutex_unlock(&m_mutex) == 0;
	}

private:
	pthread_mutex_t m_mutex;
};

#endif

时间: 2024-08-01 15:13:26

文件传输项目模块2互斥与同步的相关文章

文件传输项目模块1-线程池

#ifndef THREADPOOL_H #define THREADPOOL_H #include<iostream> #include<list> #include<exception> #include<pthread.h> #include"locker.h"//线程的互斥和同步机制 using namespace std; template<typename T>class threadpool { public:

【Linux探索之旅】第四部分第三课:文件传输,潇洒同步

内容简介 1.第四部分第三课:文件传输,潇洒同步 2.第四部分第四课:分析网络,隔离防火 文件传输,潇洒同步 这一课的内容相对简单,所以我们慢慢享用. 经过上一课的学习,我们已经知道如何远程连接到其他电脑了.从今以后,你就可以在自己的电脑上运行命令,来控制远方的另一台电脑了,很酷吧. 我们继续探究Linux的奇幻网络世界.这个网络世界比较特别,也许你已经有所体会:前辈们做了大量努力,靠加密方法来保证网络间传输的数据的安全,以防我们私人的信息泄露,例如密码. 这一课我们来学习文件传输,主要分为以下

Docker容器和本机之间的文件传输 使用Docker部署Tomcat项目

Docker容器和本机之间的文件传输. http://blog.csdn.net/leafage_m/article/details/72082011 使用Docker部署Tomcat项目 http://blog.csdn.net/leafage_m/article/details/72081987

Linux下几种文件传输命令

Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等敏感信息进行加密,因此可以有效的防止用户信息在传输的过程中被窃取,比FTP有更高的安全性.在功能方面与FTP很类似,不仅可以传输文件数据,而且可以进行远程的文件管理(如建立,删除,查看文件列表等操作).Sftp与ftp虽然只有一字之差,但基于

艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)

艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项目地址:http://www.51aspx.com/code/MSDCArtMengFileUpload 咨询qq:286275658 演示程序下载地址:http://pan.baidu.com/s/1geVfmcr 服务器端运行效果图: 服务器端配置文件: <?xml version="1.

使用 PuTTY 安全复制客户端将文件传输到您的 Linux 实例

使用 PuTTY 安全复制客户端将文件传输到您的 Linux 实例 PuTTY 安全复制客户端 (PSCP) 是一个命令行工具,您可以用它在 Windows 计算机与 Linux 实例之间传输文件.如果您更喜欢图形用户界面(GUI),您可以使用一种叫作"WinSCP"的开源 GUI 工具.有关更多信息,请参阅 使用 WinSCP 将文件传输到您的 Linux 实例. 要使用 PSCP,您将需要在使用 PuTTYgen 转换您的私有密钥中生成的私有密钥.您还需要 Linux 实例的公有

Linux的文件传输命令总结

因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp,wget,curl. rcp rcp不是一种安全的的传输文件的方式,rcp通过rsh(rsh见下面)来执行远程命令,要使用rcp必须经过一些配置,现在rcp已经被scp取代了,常用scp来进行文件传输.要使用rcp,需要具备以下条件: (1)如果系统中有/etc/hosts 文件,应确保该文件包含要

android asmack 注册 登陆 聊天 多人聊天室 文件传输

XMPP协议简介 XMPP协议(Extensible Messaging and PresenceProtocol,可扩展消息处理现场协议)是一种基于XML的协议,目的是为了解决及时通信标准而提出来的,最早是在Jabber上实现的.它继承了在XML环境中灵活的发展性.因此,基于XMPP的应用具有超强的可扩展性.并且XML很易穿过防火墙,所以用XMPP构建的应用不易受到防火墙的阻碍.利用XMPP作为通用的传输机制,不同组织内的不同应用都可以进行有效的通信. 这篇文章有基本的介绍,http://bl

基于FTP协议的文件传输工具(SOCKET、FTP方面、MFC方面)

一.本课程是怎么样的一门课程(全面介绍) 1.简介:FTP(File Transfer Protocol),是文件传输协议的简称.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息.2.作用:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算