摘要:
Detours的安装:下载部分:1.直接在百度搜"detour",进对应的网站下载。2.或以下链接https://www.microsoft.com/en-us/research/project/detours/?from=http%3A%2F%2Fresearch.microsoft.com%2F 阅读全文
摘要:
说明:利用管道实现服务端与客户端之间的交互。效果等同于利用socket。 命名管道(NamedPipe)是一种简单的进程间通信(IPC)机制,是服务器进程和一个或多个客户进程之间通信的单向或双向管道。其本质是文件读写、内存共享。 采用命名管道完成进程通信的过程为:1.在服务器端调用CreateNam 阅读全文
摘要:
说明:利用TCP协议和多线程实现群聊功能。一个服务器,多个客户端(同一个程序多次启动)。客户端向服务端发送数据,由服务端进行转发到其他客户端。 注意点:1.#include <WinSock2.h>一定要在#include <Windows.h>前面如:#include <WinSock2.h>#i 阅读全文
摘要:
说明:利用UDP协议,创建一个服务器和一个客户端。两者间进行通信。由客户端进行输入内容,而服务器将接受的内容进行再一次返回,并显示在服务端。 注意点;问题:为什么UDP协议的客户端的socket不需要绑定IP地址和端口号?解析; 书上都是这么说的,UDP客户端不用绑定IP和端口,操作系统会给它自动分 阅读全文
摘要:
服务端: // WSASever.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #pragma comment (lib,"wSock32.lib") int _tmain(int argc, _TCHAR* argv[]) { WORD wVersionRequested; WSADAT... 阅读全文
摘要:
TCP与UDP在socket编程中的区别 一、TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,UDP不保证 部分满足以下几点要求时,应该采用UDP 面向数据报方式 网 阅读全文
摘要:
轻量级的读写锁(Slim Reader-Writer locks):读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可 阅读全文
摘要:
事件:事件Event实际上是个内核对。事件类似于前面的信号量,一个事件有两种状态:激发状态和未激发状态。也称有信号状态和无信号状态。事件又分两种类型:手动重置事件和自动重置事件。手动重置事件被设置为激发状态后,会唤醒所有等待的线程,而且一直保持为激发状态,直到程序重新把它设置为未激发状态。自动重置事 阅读全文
摘要:
信号量(Semaphore):有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。 比如:以 阅读全文
摘要:
互斥锁:互斥锁是一个可以处于两态之一的变量:解锁和加锁。Mutex本质上说就是一把锁,提供对资源的独占访问,所以Mutex主要的作用是用于互斥。Mutex对象的值,只有0和1两个值。这两个值也分别代表了Mutex的两种状态。值为0, 表示锁定状态,当前对象被锁定,用户进程/线程如果试图Lock临界资 阅读全文
摘要:
锁操作:为了确保操作区域的安全。一般有旋转锁、读写锁、原子操作。 原子操作:原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。原子操作是不可分割的,在执行完毕之前不会被任何其它任务或事件中断。 例子:++ 阅读全文
摘要:
临界区(Critical Section)指每个进程中访问临界资源的那段代码,临界资源是一次仅允许一个进程使用,多个进程中涉及到同一个临界资源的临界区称为相关临界区。 临界区线程同步原理:有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界 阅读全文
摘要:
根据一篇文章,精简了一下关于线程同步的知识 什么是线程同步?当使用多个线程来访问同一个数据时,非常容易出现线程安全问题(比如多个线程都在操作同一数据导致数据不一致),所以我们用同步机制来解决这些问题。 为什么要同步?1. 线程同步=线程排队2. 多个线程访问共享的资源才需要同步3. 多个线程读取常量 阅读全文