标签:实现 完成 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
标签:实现 完成 span play while 它的 strong 函数 obj
原文地址:https://www.cnblogs.com/yrm1160029237/p/10207571.html