码迷,mamicode.com
首页 > 编程语言 > 详细

C++——多线程

时间:2019-01-06 13:38:35      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:实现   完成   span   play   while   它的   strong   函数   obj   

 

1.多进程和多线程

2.并行并发

3.共享数据的管理和线程间的通信

 

 

1.同步

所谓同步,是指在不同进程之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。

如果用对资源的访问来定义的话,同步是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。

2.互斥

所谓互斥,是指散布在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。

如果用对资源的访问来定义的话,互斥某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

3.互锁机制解决多线程的同步问题:只允许一个线程拥有对共享资源的独占

 

#include <iostream>   
#include <windows.h>   
using namespace std;

HANDLE hMutex;

DWORD WINAPI Fun(LPVOID lpParamter)//线程定义
{
    while (1) {
        WaitForSingleObject(hMutex, INFINITE);//申请得到该资源:hMutex指定所申请的资源的句柄,INFINITE,表示如果没有申请到资源就一直等待该资源
        cout << "Fun display!" << endl;
        Sleep(1000);
        ReleaseMutex(hMutex);//该函数用于释放一个独占资源,进程一旦释放该资源,该资源就不再属于它了
    }
}

int main()
{
    HANDLE hThread = CreateThread(NULL, 0, Fun, NULL, 0, NULL);//开启线程
    hMutex = CreateMutex(NULL, FALSE, L"screen"); //创造了一个名为screen并且归属于创建它的进程的资源
    CloseHandle(hThread);
    while (1) {
        WaitForSingleObject(hMutex, INFINITE);//申请得到该资源:hMutex指定所申请的资源的句柄,INFINITE,表示如果没有申请到资源就一直等待该资源
        cout << "main display!" << endl;
        Sleep(2000);
        ReleaseMutex(hMutex);//该函数用于释放一个独占资源,进程一旦释放该资源,该资源就不再属于它了
    }

    return 0;
}

 

 

参考:http://www.jizhuomi.com/software/287.html?utm_source=tuicool

 

C++——多线程

标签:实现   完成   span   play   while   它的   strong   函数   obj   

原文地址:https://www.cnblogs.com/yrm1160029237/p/10207571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!