SetWindowText(str);//编辑框显示CSingleLocksinglelock(&mySemaphore);//创建CSingleLock类对象singlelock.Lock();//计数器初始值减1MessageBox(NULL,"信号量控制访问资源线程数","提示",MB_ICONWARNING);//弹出对话框thread--;//线程数目减1str.Format("%d",thread);pedit->SetWindowText(str);//编辑框显示return0;}-IMDN开发者社群-imdn.cn"> SetWindowText(str);//编辑框显示CSingleLocksinglelock(&mySemaphore);//创建CSingleLock类对象singlelock.Lock();//计数器初始值减1MessageBox(NULL,"信号量控制访问资源线程数","提示",MB_ICONWARNING);//弹出对话框thread--;//线程数目减1str.Format("%d",thread);pedit->SetWindowText(str);//编辑框显示return0;} - IMDN开发者社群-imdn.cn">
登录
首页 » VC++源码 » VC6.0 使用信号量Semaphore实现线程的同步

VC6.0 使用信号量Semaphore实现线程的同步

于 2022-02-20 发布 文件大小:13.88 kB
0 154
下载积分: 2 下载次数: 1

代码说明:

VC6.0 使用信号量Semaphore实现线程的同步,使用信号量实现线程同步,设置访问保护对象的最多线程数为2,确定当前已经启动运行的线程数目,可以创建线程。   CWinThread* pThread=AfxBeginThread(ThreadProc,&m_Edit);//开辟一个工作线程,   int thread=0;//全局变量记录当前运行线程的数目   CSemaphore mySemaphore(2,2);//创建CSemaphore类对象   UINT ThreadProc(LPVOID pParam)//工作线程入口函数   {    CEdit *pedit=(CEdit*)pParam;    CString str;    thread++;//线程数目加1    str.Format("%d",thread);    pedit->SetWindowText(str);//编辑框显示    CSingleLock singlelock(&mySemaphore);//创建CSingleLock类对象    singlelock.Lock();//计数器初始值减1    MessageBox(NULL,"信号量控制访问资源线程数","提示",MB_ICONWARNING);//弹出对话框    thread--;//线程数目减1    str.Format("%d",thread);    pedit->SetWindowText(str);//编辑框显示    return 0;   }

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • VC++ 利用Word文档实现打印功能
    VC++ 6.0 利用Word文档实现打印功能,本示例是将需要打印的内容导入到Word文档中,然后直接打开Word文档,用户通过Word选择打印功能,打印出内容,其核心的打印是由word完成的,因此你的电脑上需要安装有Word,并且与打印机已连接好。   在调试时注意:时需要导入一个ADO动态链接库msado15.dll,该动态库位于系统盘下的“Program FilesCommon FilesSystemado”目录下。   例:如果你的系统盘为C盘,则该文件位于“C:Program FilesCommon FilesSystemado”目录中。所以需要打开工程文件,并展开“FileView”视图中的“Header Files”节点,然后双击“StdAfx.h”文件,将代码中的“d:Program FilesCommon FilesSystemadomsado15.dll”改为“c:Program FilesCommon FilesSystemadomsado15.dll”。
    2022-03-05 03:24:43下载
    积分:1
  • VC++ 实现对软件的简单加密(注册)功能
    VC++ 实现对软件的简单加密,本程序是通过C盘序列号来加密文件,实现软件的注册功能,软件号和C盘序列号同时正确才可验证,而C盘的序列号是唯一的,获得c盘序列号的代码如下:   DWORD VolumeSerialNumber;   GetVolumeInformation("c:",NULL,12,&VolumeSerialNumber,NULL,NULL,NULL,10);   VolumeSerialNumber^=0x12345678;//本机c盘序列号简单运算   m_usernum=VolumeSerialNumber;   UpdateData(false);   然后通过序列的判断,来验证加密是否正确,比如下边的代码来做加密验证:   UpdateData(true);   DWORD num;   num=m_usernum;   num^=0x1999aa98+12;//加密算法   if(!(num==m_serialnum))   {    AfxMessageBox("输入的序列号不正确!");    return;   }
    2022-11-07 22:05:03下载
    积分:1
  • VC++ DirectShow开发指南
    VC++ DirectShow开发指南源码集,涉及的内容几乎涵盖了在Windows平台上使用DirectShow进行C++编码的方方面面。全书详细介绍了DirectShow的基础知识,重点讨论了Filter的开发,以及DirectShow   应用程序的开发,包括目前非常流行的如音视频采集、数码摄像机的支持、非线性   编辑等应用,深入分析了DirectShow SDK提供的部分典型源代码例子,结合作者个人的一些开发实践,通过案例和开放源码分析,进一步介绍DirectShow的实务应用。   此为本书的配套源码集,对VC++编程者来说,是比较不错的编程资料。
    2022-02-15 05:44:18下载
    积分:1
  • VC++ 创建WinExample和MFCExample窗口程序演示
    VC++ WinExample和MFCExample程序演示,是创建此两类程序的演示,一种是使用WINAPI的方式 创建程序窗口,另一种是采用MFC方式创建窗口,下面列举一上结使用WINAPI方式创建窗口的具体代码,完整代码请下载本源码。   // 创建窗口   hWnd = CreateWindow("HelloMsg",// 窗口类名    "我的窗口", // 窗口标题    WS_OVERLAPPEDWINDOW,// 窗口样式    CW_USEDEFAULT,// 窗口最初的x位置    CW_USEDEFAULT,// 窗口最初的y位置    CW_USEDEFAULT,// 窗口的宽度    CW_USEDEFAULT,// 窗口的高度    NULL,// 父窗口句柄    NULL,// 窗口菜单句柄    hInstance,// 应用程序实例句柄    NULL);// 创建窗口的参数窗口消息处理函数   LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)   {    switch (uMsg)    {    case WM_LBUTTONDOWN:// 鼠标左键按下消息    MessageBox(NULL, "欢迎进入Visual C++!", "问候", 0);    break;    case WM_DESTROY:// 窗口销毁消息    PostQuitMessage(0);    break;    default:    // 默认消息处理函数    return DefWindowProc(hWnd, uMsg, wParam, lParam);    }    return 0;   }
    2022-09-16 09:05:03下载
    积分:1
  • VC++ 6.0 启动画面编程实例
    VC++ 6.0 启动画面编程实例,现在这种软件启动方式比较常见了,打开软件 后,先显示一个启动画面,同时程序开始载入,显示进度条,本例子我觉得演示的挺好,源代码编译环境:vc++6.0,运行截图:请参见测试截图。
    2022-03-18 03:56:27下载
    积分:1
  • VC++ 制作的 TextProgress文本进度条样例
    这是VC++ 制作的 TextProgress文本进度条样例,可自定义步长和进度条数字变化范围,根据窗口中的提示设置相关参数后,即可看到进度条的变化效果,下面是具体的实现代码:   void CTextProgressDlg::OnButtonStart()   {    UpdateData();    m_ctrProgressBar.SetPos(0);//设定当前位置    m_ctrProgressBar.SetRange(m_nRangeFrom,m_nRangeTo); //设定范围    m_ctrProgressBar.SetStep(m_nStep);//设定步长    m_ctrProgressBar.SetShowText(TRUE);//允许显示文字    for (int i = 0; i
    2022-11-21 13:20:03下载
    积分:1
  • VC++ 编程获取硬盘SMART信息
    VC++ 编程获取硬盘驱动器的SMART信息,SMART信息能对硬盘的磁头单元、硬盘温度、盘片表面介质材料、马达及其驱动系统、硬盘内部电路等进行监测,及时分析并预报硬盘可能发生的问题。运行本源码测试前,请先打开Biso中的SMART信息监测开关。   本源码中的信息是英文的,使用时需要对照翻译过来,测试图如下所示。
    2022-06-03 05:08:07下载
    积分:1
  • 基于VC6的游戏内存修改器2
    VC6.0写一个简单的内存修改器,输出一个变量的值和地址实现原理:   BOOL ReadProcessMemory(    HANDLE hProcess,   LPCVOID lpBaseAddress,   LPVOID lpBuffer,   DWORD nSize,   LPDWORD lpNumberOfByteRead   );   WriteProcessMemory(hProcess,lpBaseAddress,lpBuffer,nSize,lpNumberOfByteRead);   编写测试程序   搜索内存
    2022-01-25 22:26:20下载
    积分:1
  • VC6.0 使用信号量Semaphore实现线程的同步
    VC6.0 使用信号量Semaphore实现线程的同步,使用信号量实现线程同步,设置访问保护对象的最多线程数为2,确定当前已经启动运行的线程数目,可以创建线程。   CWinThread* pThread=AfxBeginThread(ThreadProc,&m_Edit);//开辟一个工作线程,   int thread=0;//全局变量记录当前运行线程的数目   CSemaphore mySemaphore(2,2);//创建CSemaphore类对象   UINT ThreadProc(LPVOID pParam)//工作线程入口函数   {    CEdit *pedit=(CEdit*)pParam;    CString str;    thread++;//线程数目加1    str.Format("%d",thread);    pedit->SetWindowText(str);//编辑框显示    CSingleLock singlelock(&mySemaphore);//创建CSingleLock类对象    singlelock.Lock();//计数器初始值减1    MessageBox(NULL,"信号量控制访问资源线程数","提示",MB_ICONWARNING);//弹出对话框    thread--;//线程数目减1    str.Format("%d",thread);    pedit->SetWindowText(str);//编辑框显示    return 0;   }
    2022-02-20 19:37:49下载
    积分:1
  • VC++ 限定框架窗口的大小和位置
    VC++ 限定框架窗口的大小和位置,无法移动且固定大小的SDI,用VC++编写实现这种固定窗口大小,且无法用鼠标拖动的窗口。窗口是不能改变大小的,窗口标题也不能被拖动,运行程序后,窗口的位置就已经固定,并不能移动和调整大小的操作。相关的代码:   CMenu* pTopMenu = GetSystemMenu(FALSE); //获取系统菜单   pTopMenu -> RemoveMenu(4,MF_BYPOSITION); //去除最大、最小化功能   pTopMenu -> RemoveMenu(2,MF_BYPOSITION); //去除改变尺寸功能   pTopMenu -> RemoveMenu(1,MF_BYPOSITION); //去除移动功能   if( !CFrameWnd::PreCreateWindow(cs) )    return FALSE;   //设置框架窗口的初始大小和位置   cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 4;    cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3;    cs.y = cs.cy / 4;    cs.x = cs.cx / 2;   return TRUE;
    2022-06-14 00:02:23下载
    积分:1
  • 696518资源总数
  • 105885会员总数
  • 31今日下载