多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] <details> <summary>1、进程通信的方式</summary> asdsadasd </details> <br /> <details> <summary>2. 线程间的同步方式?</summary> > 为什么需要线程同步:线程有时候会和其他线程共享一些资源,比如内存、数据库等。当多个线程同时读写同一份共享资源的时候,可能会发生冲突。因此需要线程的同步,多个线程按顺序访问资源。 * **互斥量** Mutex:互斥量是内核对象,只有拥有互斥对象的线程才有访问互斥资源的权限。因为互斥对象只有一个,所以可以保证互斥资源不会被多个线程同时访问;当前拥有互斥对象的线程处理完任务后必须将互斥对象交出,以便其他线程访问该资源; * **信号量** Semaphore:信号量是内核对象,它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。信号量对象保存了**最大资源计数**和**当前可用资源计数**,每增加一个线程对共享资源的访问,当前可用资源计数就减1,只要当前可用资源计数大于0,就可以发出信号量信号,如果为0,则将线程放入一个队列中等待。线程处理完共享资源后,应在离开的同时通过`ReleaseSemaphore`函数将当前可用资源数加1。如果信号量的取值只能为0或1,那么信号量就成为了互斥量; * **事件** Event:允许一个线程在处理完一个任务后,主动唤醒另外一个线程执行任务。事件分为手动重置事件和自动重置事件。手动重置事件被设置为激发状态后,会唤醒所有等待的线程,而且一直保持为激发状态,直到程序重新把它设置为未激发状态。自动重置事件被设置为激发状态后,会唤醒**一个**等待中的线程,然后自动恢复为未激发状态。 * **临界区** Critical Section:任意时刻只允许一个线程对临界资源进行访问。拥有临界区对象的线程可以访问该临界资源,其它试图访问该资源的线程将被挂起,直到临界区对象被释放。 </details> <br /> <details> <summary>3. 什么是死锁?怎么避免?</summary> <br /> 在两个或者多个并发进程中,每个进程持有某种资源而又等待其它进程释放它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁(deadlock)。 </details> <br /> <details> <summary>4. 线程和进程有什么区别?</summary> * 进程(Process)是系统进行资源分配和调度的基本单位,线程(Thread)是CPU调度和分派的基本单位; * 线程依赖于进程而存在,一个进程至少有一个线程; * 进程有自己的独立地址空间,线程共享所属进程的地址空间; * 进程是拥有系统资源的一个独立单位,而线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),和其他线程共享本进程的相关资源如内存、I/O、cpu等; * 在进程切换时,涉及到整个当前进程CPU环境的保存环境的设置以及新被调度运行的CPU环境的设置,而线程切换只需保存和设置少量的寄存器的内容,并不涉及存储器管理方面的操作,可见,进程切换的开销远大于线程切换的开销; * 线程之间的通信更方便,同一进程下的线程共享全局变量等数据,而进程之间的通信需要以进程间通信(IPC)的方式进行; * 多线程程序只要有一个线程崩溃,整个程序就崩溃了,但多进程程序中一个进程崩溃并不会对其它进程造成影响,因为进程有自己的独立地址空间,因此多进程更加健壮 </details> <br /> <details> <summary>5、让你设计一个操作系统,你怎么设计,都包含啥</summary> asdsadasd </details> <br /> <details> <summary>6、多线程同步的方式</summary> asdsadasd </details> <br /> <details> <summary>7、多线程的实现方式</summary> asdsadasd </details> <br /> <details> <summary>8、共享内存原理</summary> asdsadasd </details> <br /> <details> <summary>9、如果避免死锁</summary> asdsadasd </details> <br /> <details> <summary>10、如何缓存</summary> asdsadasd </details> <br /> <details> <summary>11、虚拟内存和物理内存有什么区别?空间置换?</summary> asdsadasd </details> <br /> <details> <summary>12、什么是死锁,产生死锁的原因和必要条件 </summary> asdsadasd </details> <br /> <details> <summary>13、互斥锁</summary> asdsadasd </details> <br /> <details> <summary>14、内存泄漏和内存溢出</summary> asdsadasd </details> <br /> <details> <summary>15、虚拟内存</summary> asdsadasd </details> <br />