• 2018-2019-1 20165327 《信息安全系统设计基础》第八周学习总结


    学习目标

    1、掌握三种并发的方式:进程、线程、I/O多路复用
    2、掌握线程控制及相关系统调用
    3、掌握线程同步互斥及相关系统调用
    学习资源
    教材:第十一章《网络编程》简单过一下(刘念老师讲过了,我们只考试),教材:第十二章《并发编程》。

    知识点总结

    1、三种并发方式
    构造并发程序的方法有三种:
    进程
    线程
    I/O多路复用
    进程:用内核来调用和维护,有独立的虚拟地址空间,显式的进程间通信机制。

    线程:运行在一个单一进程上下文中的逻辑流。由内核进行调度,共享同一个虚拟地址空间。

    I/O多路复用:应用程序在一个进程的上下文中显式地调度控制流。逻辑流被模型化为状态机。

    2、线程控制及相关系统调用
    socket编程中:线程是运行子进程上下文中的逻辑流。

    线程与进程的不同:

    线程的上下文切换要比进程的上下文切换快得多;
    和一个进程相关的线程组成对等,独立于其他线程创建的线程。
    主线程和其他线程的区别仅在于它总是进程中第一个运行的线程。

    创建线程

    pthread create:创建一个新的线程,在新线程的上下文中运行线程例程f。
    新线程可以通过pthread _self获得自己的线程ID。

    终止线程

    一个线程的终止方式:当顶层的线程例程返回,线程会隐式地终止;
    pthread_exit:线程显式地终止。
    注:如果主线程调用pthread _exit,它会等待所有其他对等线程终止,然后再终止主线程和整个进程。

    回收已终止线程的资源

    pthread _join:阻塞,直到线程tid终止,回收已终止线程占用的所有存储器资源。
    注:pthread _join只能等待一个指定的线程终止。

    分离线程

    在任何一个时间点上,线程是可结合的或者是分离的。一个可结合的线程能够被其他线程收回其资源和杀死;一个可分离的线程是不能被其他线程回收或杀死的。它的存储器资源在它终止时有系统自动释放。
    默认情况下,线程被创建成可结合的,为了避免存储器漏洞,每个可集合的线程都应该要么被其他进程显式的回收,要么通过调用pthread _detach被分离。
    初始化线程 pthread _once允许初始化与线程例程相关的状态。once _control变量是一个全局或者静态变量,总是被初始化为PTHREAD _ONCE _INIT。

    3、C/S编程模型

    • 客户端和服务器都是进程,C/S编程模型由一个服务器进程和一个或多个客户端进程组成。
      服务器进程管理某种资源,通过操作这种资源来为它的客户端提供某种服务。基本操作为事务,一个客户端-服务器事务由四步组成:
      (1)客户端向服务器发送请求,发起一个事务;
      (2)服务器收到请求,操作资源;
      (3)服务器给客户端发送一个响应,并等待下一个请求。
      (4)客户端收到响应并处理它。
  • 相关阅读:
    谷歌云服务器XShell登录
    PGI 遇到的坑
    Matlab处理数据导出Paraview可读的vtk文件(二)
    Matlab处理数据导出Paraview可读的vtk文件(一)
    Windows7 + OSG3.6 + VS2017 + Qt5.11
    CentOS安装指定版本GCC
    利用ncurses库开发终端工具箱(1)—— ToDoList小工具开发
    Winform Post请求传递Json格式参数的写法
    把Java代码转成c#可用的dll
    Image.FromStream(ms) 提示参数无效
  • 原文地址:https://www.cnblogs.com/yjtblog/p/10017414.html
Copyright © 2020-2023  润新知