多线程编程知识点

1 如何创建一个线程

2 如何等待一个线程走完

   join()线程间同步

3 如何处理资源共享问题

    注意加锁的顺序和释放的顺序,不要造成死锁和活锁。

4 线程有哪些状态,以及如何转换, 优缺点?在什么场景下应用

   线程的状态一般有  Ready, block, running, terminate。

    当线程没有工作的可做的时候, 比如消息队列为空了, 就让他sleep一会儿。

   不建议用suspend,从线程外suspend该线程, 会造成资源无法释放,造成死锁。建议用在线程内部用sleep来控制。

   线程间同步:信号量等是用来线程间互斥,join()用来等待其他线程完成。

5 线程的优先级,在什么场景下应用?

    线程的优先级是个比较复杂的问题, 分为不同application和应用场景。

   在UI程序中, UI线程有最高的优先级,work线程的优先级比较低。

   在Server线程中, 监听线程有最高的优先级,work线程优先级最低

   还有线程的优先级为动态和静态的。当线程为idle的状态的时候,可以降低其优先级


6 线程间通信问题,

    全局变量, message,

7  锁的问题:

    四种进程或线程同步互斥的控制方法
        1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。
  2、互斥量:为协调共同对一个共享资源的单独访问而设计的。
  3、信号量:为控制一个具有有限数量用户资源而设计。
  4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。

   总结:
  1. 互斥量与临界区的作用非常相似,但互斥量是可以命名的,也就是说它可以跨越进程使用。所以创建互斥量需要的资源更多,所以如果只为了在进程内部是用的话使用临界区会带来速度上的优势并能够减少资源占用量。因为互斥量是跨进程的互斥量一旦被创建,就可以通过名字打开它。
  2. 互斥量(Mutex),信号灯(Semaphore),事件(Event)都可以被跨越进程使用来进行同步数据操作,而其他的对象与数据同步操作无关,但对于进程和线程来讲,如果进程和线程在运行状态则为无信号状态,在退出后为有信号状态。所以可以使用WaitForSingleObject来等待进程和线程退出。
  3. 通过互斥量可以指定资源被独占的方式使用,但如果有下面一种情况通过互斥量就无法处理,比如现在一位用户购买了一份三个并发访问许可的数据库系统,可以根据用户购买的访问许可数量来决定有多少个线程/进程能同时进行数据库操作,这时候如果利用互斥量就没有办法完成这个要求,信号灯对象可以说是一种资源计数器。

   


1. 线程基础知识:线程是操作系统分配CPU时间片的最小单位,多线程就是指同时运行多个线程,可以提高程序的执行效率和响应速度。 2. 线程同步:多个线程访问共享资源时需要进行同步,常用的同步方式有锁、信号量、事件等,在多线程编程中需要注意同步问题,避免出现死锁、竞争等问题。 3. 线程池:线程池是一种管理和复用线程的机制,可以避免频繁创建和销毁线程的开销,提高程序性能。 4. 异步编程:异步编程是一种高效的多线程编程方式,可以避免阻塞主线程,提高程序的响应速度和吞吐量,常用的异步编程方式有回调、任务、异步/await等。 5. 并发集合类:并发集合类是一种线程安全的数据结构,可以在多线程环境下安全地访问和修改集合中的元素,常用的并发集合类有ConcurrentQueue、ConcurrentDictionary等。 6. 线程调试:多线程编程中常常会出现难以重现或者难以查找的问题,需要使用调试工具进行线程调试,常用的调试工具有Debug、Trace等。 7. 线程性能优化:多线程编程中需要注意性能问题,可以通过调整线程数、使用线程池、优化同步方式等方式提高程序性能。 8. 线程安全性:多线程编程中需要注意线程安全性问题,避免出现数据竞争、死锁、线程泄漏等问题,提高程序的可靠性和稳定性。 9. 并发编程模型:并发编程模型是一种用于描述多线程编程模式的方式,常用的模型有Actor模型、CSP模型、数据流模型等。 10. 并行计算:并行计算是一种高效的计算方式,可以将任务分配到多个线程中执行,常用的并行计算方式有MapReduce、OpenMP、CUDA等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值