网络与多线程
文章平均质量分 85
屠变恶龙之人
这个作者很懒,什么都没留下…
展开
-
多线程中的Join()方法
Join,单词本事就是连接的意思。先贴出几段代码猜猜结果。 public static int Main() { Alpha oAlpha = new Alpha(); Thread Thread1 = new Thread(delegate() { Co转载 2016-12-07 20:42:01 · 253 阅读 · 0 评论 -
select、poll、epoll之间的区别总结
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用转载 2017-03-02 10:54:02 · 693 阅读 · 0 评论 -
TIME_WAIT
TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的。仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT。服务器在处理客户端请求的时候,如果你的程序设计为服务器主动关闭,那么你才有可能需要关注这个TIMEWAIT状态过多的问题。如果你的服务器设计为被动关闭,那么你首先要关注的是CLOSE_WAIT。原则T转载 2017-04-11 10:37:38 · 234 阅读 · 0 评论 -
TcpLister和TcpClient进行文件传输
TCP是一种面向连接的,可靠的,基于字节流的传输层通信协议。TCP建立一个连接需要三次握手,而终止一个连接要经过四次握手。一旦通信双方建立了TCP连接,连接中的任何一方都能向对方发送数据和接受对方发来的数据。TCP协议负责把用户数据(字节流)按一定的格式和长度组成多个数据报进行发送,并在接收到数据报之后按分解顺序重新组装和恢复传输的数据。使用TCP传输文件,可以直接使用socket进行传输转载 2017-03-16 11:12:53 · 2808 阅读 · 0 评论 -
Socket编程面试题
1、TCP和UDP的区别:1)TCP提供面向连接的传输,通信前要先建立连接(三次握手机制);UDP提供无连接的传输,通信前不需要建立连接。2)TCP提供可靠的传输(有序,无差错,不丢失,不重复);UDP提供不可靠的传输。3)TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组;UDP是面向数据报的传输,没有分组开销。4)TCP提供拥塞控制和流量控制机制转载 2017-03-06 20:12:42 · 45099 阅读 · 2 评论 -
三次握手四次分手
TCP是什么?具体的关于TCP是什么,我不打算详细的说了;当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续。它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功。首先来看看OSI的七层模型:我们需要知道TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data转载 2017-02-22 19:14:56 · 457 阅读 · 0 评论 -
STL容器线程安全
标准C++的世界是相当保守和精简的。在这个纯洁的世界,所有可执行文件都是静态链接的。不存在内存映射文件和共享内存。没有窗口系统,没有网络,没有数据库,没有进程。在这种情况下,当发现标准没有提到任何关于线程的东西时你不该感到惊讶。你对STL的线程安全有的第一个想法应该是这取决于STL的实现。 当然,多线程程序是很普遍的,所以大部分STL厂商努力使他们的实现在线程环境中可以正常工作。但转载 2017-04-05 16:50:29 · 477 阅读 · 0 评论 -
多线程自增问题
i++考虑变量i++的操作,实际上可以分解为以下3步:(1)从内存单元读入寄存器;(2)在寄存器中对变量做增量操作;(3)把新的值写回内存单元。如果两个线程试图几乎在同一时间对同一变量做增量操作而不进行同步的话,结果可能就不一致了,在上述代码中,我们传进线程函数的是变量的地址,那么变量i自增后,可能还没有写回内存单元,就被另一个线程读取了,那为什么不是只创建了一个线程了,而是确转载 2017-04-05 17:24:14 · 3106 阅读 · 0 评论 -
临界区,互斥量,信号量,事件的区别
定义 1.临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2.互斥量:为协调共同对一个共享资源的单独访问而设计的。 3.信号量:为控制一个具有有限数量用户资源而设计。 4.事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。临界区(Critical Section) 保证在某一转载 2017-05-24 17:55:41 · 301 阅读 · 0 评论 -
线程安全/锁的机制及适用场景
互斥锁:mutex,用于保证在任何时刻,都只能有一个线程访问该对象。当获取锁操作失败时,线程会进入睡眠,等待锁释放时被唤醒 自旋锁:spinlock,在任何时刻同样只能有一个线程访问对象。但是当获取锁操作失败时,不会进入睡眠,而是会在原地自旋,直到锁被释放。这样节省了线程从睡眠状态到被唤醒期间的消耗,在加锁时间短暂的环境下会极大的提高效率。但如果加锁时间过长,则会非常浪费CPU资源转载 2017-03-02 10:59:44 · 857 阅读 · 0 评论 -
常见的网络命令
Ping命令:ping命令通过发送ICMP回声请求报文来检查与另一个计算机的连接。这是一个用于排除连接故障的测试命令,如果不带参数则显示帮助信息。ping命令的语法如下:C:/>ping /?用法:ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS][-r c转载 2017-05-19 13:11:48 · 4102 阅读 · 0 评论 -
网络基础复习
1. OSI , TCP/IP ,五层协议的体系结构OSI分层(7层) :物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层) :网络接口层、网际层、运输层、应用层。 五层协议(5层) :物理层、数据链路层、网络层、运输层、应用层。每一层的作用如下 : 物理层:透明传输比特。数据链路层 :数据链路层在不可靠的物理转载 2017-05-19 12:59:56 · 329 阅读 · 0 评论 -
浏览器访问网站的过程
从本地DNS服务器那里得到百度的IP;得到百度的IP,下一步是使用TCP协议,建立TCP连接;为了将消息从你的PC上传到服务器上,需要用到IP协议、ARP协议和OSPF协议;用HTTP协议请求网页内容转载 2017-01-03 13:13:32 · 470 阅读 · 0 评论 -
网络编程基础--Socket
一、定义简单地说,就是不同的计算机之间为了满足各自进程间通信的需要所架设的一条数据通道,是一个通信链的句柄。为了区别不同的应用程序进程和连接,许多计算a级操作系统为应用程序与TCP/IP协议交互提供了称为套接字的接口,区分不同的应用程序进程间的通信和连接。 生成套接字主要3个参数:(通信的目的IP地址、使用的传输协议、端口号) 套接字类型: 1.流式套原创 2017-01-03 19:44:09 · 316 阅读 · 0 评论 -
关于同步,异步,阻塞,非阻塞,IOCP/epoll,select/poll,AIO ,NIO ,BIO的总结
相关资料IO基本概念Linux环境Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符)。对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)。描述符就是一个数字(可以理解转载 2017-03-02 10:50:15 · 458 阅读 · 0 评论 -
网络编程基础--常用类
IPAddress类 1) IPAddress类的默认构造函数为:public IPAddress(long address) 常用:Parse()方法用于创建IPAddress。IPAddress myip = IPAddress.Parse("192.168.1.1"); ToString()方法用于将Internet地址转原创 2016-12-28 16:25:08 · 305 阅读 · 0 评论 -
网络编程基础--TCP/IP
基础大致分为四个方面,每次学习一个一、TCP/IP概述 1. IP地址 A(0):1.0.0.0~126.0.0.0 //可用的A类网络有126个,每个网络能容纳1亿多个主机 B(10):128.0.0.0~191.255.255.255 //由2个字节的网络地址+2个字节的主机地址,可原创 2016-12-28 15:48:41 · 211 阅读 · 0 评论 -
网络编程基础--多线程
一、进程与线程 1)进程被定义为一个正在运行的程序的实例,是系统进行调度和资源分配的一个独立单位。简单分为系统进程和用户进程。而程序是一段静态代码,不能申请系统资源,不能被系统调度,也不能作为单独运行的单位,因此它不占用系统的运行资源。 线程是进程中的一个实体,自己不拥有系统资源,一个标准的线程由线程ID,当前指令指针PC,寄存器集合,堆栈组成。原创 2017-01-06 11:56:21 · 220 阅读 · 0 评论 -
C#5.0多线程同步方法详解
1,线程概述线程是程序汇中独立的指令流。线程有一个优先级,实际上正在处理的程序的位置计数器,一个存储其局部变量的栈。每个线程都有自己的栈。但应用程序的内存和堆由一个进程的所有线程共享。进程包含资源,如windows句柄,文件句柄或其他内核对象。每个进程都分配了虚拟内存。一个进程至少包含一个线程。操作系统会调度线程。总结:同步代码区域(代码块):lock, Mon转载 2017-01-06 12:27:50 · 1227 阅读 · 0 评论 -
C#-Socket编程-UDP
服务器端static void Main(string[] args){ //1.Socket udpserver=new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp); //2. IPAddress ipaddress = IPAddress.Pars原创 2017-01-11 11:57:52 · 351 阅读 · 0 评论 -
C#-Socket编程-TCP
服务器端using System;using System.Collections;using System.Net.Sockets; //命名空间using System.Net;using System.Text; namespace SocketServer{ //思路:1.创建一个Socket //原创 2016-10-27 13:42:13 · 1325 阅读 · 1 评论 -
C#多线程概述
一、使用线程的理由1、可以使用线程将代码同其他代码隔离,提高应用程序的可靠性。2、可以使用线程来简化编码。3、可以使用线程来实现并发执行。二、基本知识1、进程与线程:进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源。2、前台线程和后台线程:通过Thread类新建线程默认为前台线程。当所有前台线程关闭时,所有的后台线程转载 2017-03-02 09:30:52 · 213 阅读 · 0 评论 -
OpenMP和Pthread比较
pthread在程序启动时创建一束线程,将工作分配到线程上。然而,这种方法需要相当多的线程指定代码,而且不能保证能够随着可用处理器的数量而合理地进行扩充。 OpenMP,不需要指定数量,在有循环的地方加上代码,修改设置文件极客。OpenMP 非常方便,因为它不会将软件锁定在事先设定的线程数量中,但是相对的查错更难也更麻烦。========================转载 2017-03-02 12:18:50 · 11568 阅读 · 0 评论 -
多线程面试(1)
常见面试题目:1. 描述线程与进程的区别?2. 为什么GUI不支持跨线程访问控件?一般如何解决这个问题?3. 简述后台线程和前台线程的区别?4. 说说常用的锁,lock是一种什么样的锁?5. lock为什么要锁定一个参数,可不可锁定一个值类型?这个参数有什么要求?6. 多线程和异步有什么关系和区别?7. 线程池的优点有哪些?又有哪些不足?8. Mutex和l转载 2017-03-06 19:42:08 · 676 阅读 · 0 评论 -
进程
进程 一、进程的引入一是刻画系统的动态性,发挥系统的并发性。而是解决共享性,正确描述程序的执行状态。多道程序系统中,程序具有:并行、制约以及动态的特征。程序概念难以反映系统中的情况: 1. 程序是一个静态的概念程序是完成某个功能的指令集和。系统实际上是出于不断变化的状态中,程序不能反映这种动态性。 2. 程序概念不能反映系统中的并行特性例如:两个C语言源程序由一个编译程序完原创 2017-01-03 14:32:23 · 287 阅读 · 0 评论 -
多线程面试(2)
系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性。系列中不但会详细讲解多线程同步互斥的各种“招式”,而且会进一步的讲解多线程同步互斥的“内功心法”。有了“招式”和“内功心法”,相信你也能对多线程挥洒自如,在笔试面试中顺利的秒杀多线程试题。 -----转载 2017-03-06 19:47:23 · 253 阅读 · 0 评论 -
线程与进程的区别
1、线程的基本概念 概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。 好处 :(1)易于调度。 (2)提高并发性。转载 2017-03-06 19:49:56 · 180 阅读 · 0 评论 -
心跳包
心跳包主要用于长连接的保活和掉线处理。一般情况下为30秒。客户端按规定时间每次发送数据给服务器端,服务器接收到之后返回一个响应给客户端,此时在客户端就能看到返回的数据,表现正常则说明连接正常。======================================心跳包实现思路我们采用的思路是:客户端连接上服务端以后,服务端维护一个在线用户字典,客户转载 2017-08-24 09:03:54 · 646 阅读 · 0 评论