一个线程同步类

原创 2004年12月30日 15:53:00

// LockObj.h: interface for the CLockObj class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(LOCKOBJ_H)
#define LOCKOBJ_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "stdtype.h"

class CLockObj
{
public:
 virtual void Lock() = 0;
 virtual void Unlock() = 0;
};

class CLockObjCS: public CLockObj
{
protected:
 CRITICAL_SECTION m_cs;
public:
 CLockObjCS(){
  InitializeCriticalSection(&m_cs);
 };

 CLockObjCS(const CLockObjCS& ){
  InitializeCriticalSection(&m_cs);
 };

 CLockObjCS(const CLockObjCS* ){
  InitializeCriticalSection(&m_cs);
 };

 virtual ~CLockObjCS(){
  DeleteCriticalSection(&m_cs);
 };
 virtual void Lock(){
  EnterCriticalSection(&m_cs);
 };

 virtual void Unlock(){
  LeaveCriticalSection(&m_cs);
 };
};

class CLock
{
protected:
 CLockObj* m_pLockObj;
public:
 CLock(CLockObj *pLockObj):m_pLockObj(pLockObj){
  m_pLockObj->Lock();
 };

 virtual ~CLock( ){
  m_pLockObj->Unlock();
 }
};

#endif

使用方法
CLockObjCS g_mycs;
int g_iCount=0;
ThreadAdd()
{
  CLock lock(&g_mycs);
  ++g_iCount;
}

TheadDec()
{
  CLock lock(&g_mycs);
  --g_iCount;
}

Java线程(二):线程同步synchronized和volatile

上篇通过一个简单的例子说明了线程安全与不安全,在例子中不安全的情况下输出的结果恰好是逐个递增的(其实是巧合,多运行几次,会产生不同的输出结果),为什么会产生这样的结果呢,因为建立的Count对象是线程...
  • ghsau
  • ghsau
  • 2012年04月04日 10:49
  • 112467

C# 线程同步 类

本文主要描述在C#中线程同步的方法。线程的基本概念网上资料也很多就不再赘述了。直接接入主题,在多线程开发的应用中,线程同步是不可避免的。在.Net框架中,实现线程同步主要通过以下的几种方式来实现,在M...
  • foreverhot1019
  • foreverhot1019
  • 2017年04月19日 14:06
  • 225

线程的同步执行@synchronized

Objective-C在应用程序中支持多任务。这意味着可能有两个线程同时视图徐改同一个对象。有一个办法可以解决这个情况。为了防止多个线程同时执行同一个代码块,OC提供了@synchronized()指...
  • gloryFlow
  • gloryFlow
  • 2015年11月05日 11:03
  • 494

(二)线程同步_1---同步一个方法

同步一个方法(Synchronizing a method) 在并发编程中,最常见的情景莫过于多线程共享同一资源的情景了,例如多个线程同时读写相同的shu'ju...
  • sunyameng_ndsc
  • sunyameng_ndsc
  • 2014年11月02日 23:42
  • 884

JDK5新特性之线程同步工具类(三)

一. Semaphore实现信号灯 Semaphore可以控制同时访问资源的线程个数, 例如: 实现一个文件允许的并发访问数. Semaphore实现的功能就类似厕所有5个坑, 加入有十个人要上厕所,...
  • zdp072
  • zdp072
  • 2014年10月29日 23:28
  • 1034

C#多线程开发8:线程同步之Mutex类

以下代码模拟“从自动取款机中取钱”的操作:当账户余额大于等于1000时,取出1000放入口袋。代码中使用两个线程同时执行取钱操作,若不进行同步处理,可能会存在两个线程同时进入取钱逻辑,导致最终取出20...
  • tiana0
  • tiana0
  • 2015年05月26日 09:06
  • 2190

线程同步类

  线程同步是多线程程序设计的核心内容,它的目的是正确处理多线程并发时的各种问题,例如线程的等待、多个线程访问同一数据时的互斥,防死锁等。 Win32提供多种内核对象和手段用于线程同步,如互斥量、信号...
  • pixy0m0
  • pixy0m0
  • 2007年04月24日 21:13
  • 566

线程同步:银行帐户存、取款问题

1.银行账户类 package com.bankAccount.test; import java.util.concurrent.locks.Condition; import java.util...
  • lyg468088
  • lyg468088
  • 2014年11月30日 21:05
  • 1463

多线程锁:跨平台 C/C++

一、跨平台锁文件:manual_lock.h //////////////////////////////////////////////////////////////// // //Descri...
  • kanguolaikanguolaik
  • kanguolaikanguolaik
  • 2013年12月18日 14:33
  • 1818

java多线程Future和Callable类的解释与使用

java多线程Future和Callable类的解释与使用
  • jiangfullll
  • jiangfullll
  • 2014年07月09日 17:57
  • 1113
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个线程同步类
举报原因:
原因补充:

(最多只允许输入30个字)