zoukankan      html  css  js  c++  java
  • 网络编程(1)进程和线程

         进程是对一段静态指令序列(程序)的动态执行过程,是系统进行资源分配和调度的一个基本单位。同一个进程是可以划分为若干个独立的执行流,也称之为线程。

         线程是CPU调度和分配的基本单位。在Windows环境下,用户可以同时运行多个应用程序,执行的应用程序就是一个进程。例如一台电脑上同时打开两个QQ时,每个运行的QQ就是一个进程;而用一个QQ和多个人聊天时,每个聊天窗口就是一个线程。
         在C/S模式下,服务器需要不断监听来自各个客户端的请求,这时,如果采用单线程机制的话,服务器将无法处理其他事情,因为这个线程要不断的循环监听请求而无法对其他请求做出响应。实际上,当要花费大量时间进行连续的操作时,或者等待网络或其他I/O设备响应时,都可以使用多线程技术。
        在C#中,用于处理进程和线程的类是:Process类和Thread类。


    1.Process类
        Process类位于System.Diagnostics命名空间下,用于完成进程的相关处理任务,以及对进程进行管理、我们在在本地机器上可对线程进行启动、停止、查询操作:

    启动进程:

     

    Process.Start("notepad.exe");

     Process.Start()重载方法如下:

               1.Start(ProcessStartInfo) 启动由包含进程启动信息(例如,要启动的进程的文件名)的参数指定的进程资源,并将该资源与新的 Process 组件关联。

               2.Start(String, String) 通过指定应用程序的名称和一组命令行参数来启动一个进程资源,并将该资源与新的 Process 组件相关联。

               3.Start(String, String, SecureString, String) 通过指定应用程序的名称用户名密码和域来启动一个进程资源,并将该资源与新的 Process 组件关联起来。

               4.Start(String, String, String, SecureString, String) 通过指定应用程序的名称、一组命令行参数、用户名、密码和域来启动一个进程资源,并将该资源与新的 Process 组件关联起来。

     获取进程:

    代码
    //获取本地所有进程并输出
    Process[] process;
    process
    = Process.GetProcesses();
    foreach (var item in process)
    {
    Console.WriteLine(item.ProcessName);
    }

     

     停止进程:

    代码
    //停止线程
    Process[] process;
    process
    = Process.GetProcessesByNam("ProcessesName");
    foreach (var item in process)
    {
    item.WaitForExit(
    1000); //终止线程前等待的毫秒数
    item.Close();//释放与此组建关联的所有资源
    item.CloseMainWindow();//关闭拥有用户界面的进程
    }

     

     

     2.Thread

        位于System.Threading命名空间下,Thread是用于创建和控制线程的一个。对线程的常用操作有:启动线程、终止线程、合并线程和让线程休眠等。

  • 相关阅读:
    python 一
    opengl 正方体+模拟视角旋转
    MFC窗口实现最小化到托盘 右键菜单和还原
    C++获取当前机器内网IP地址
    ubuntu vim终端编辑命令
    整理网站优化(SEO)的方案
    c++函数声明的位置对函数重载的影响
    lua调用dll demo
    一、智能指针及线程同步总结------linux多线程服务端编程
    vscode remote wsl 的NoPermissions permission denied问题
  • 原文地址:https://www.cnblogs.com/tanliang/p/1940225.html
Copyright © 2011-2022 走看看