多线程开发+多线程使用共享数据-17

Posted 午间小憩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程开发+多线程使用共享数据-17相关的知识,希望对你有一定的参考价值。

 

进程:运行着的程序

线程:每个进程里面至少包含一个线程,线程是操作系统创建的,用来控制代码执行的数据结构,线程就像代码的执行许可证

单线程程序,主线程的入口就是代码的开头

主线程顺序往下执行,直到所有的代码都执行完

CPU核心,在一个时间点上只能执行一个线程代码

调度:操作系统不会让一个线程一直占用CPU的

进程里的多线程:

线程库:代码通过系统调用,请求OS分配一个新的线程

python里面:thread、threading都可以用来创建和管理线程,thread比较底层,threading是thread模块的扩展,提供了很多线程同步功能,使用起来更加方便强大

多线程的概念

#coding = utf-8

print (‘main thread start.‘)

import threading

from time import sleep

def thread1_entry():

  print (‘child thread 1,strat‘)

  sleep(15)

  print(‘child thread 1,end‘)

t1 = threading.Thread (target=thread1_entry)  #实例化

t1.start()    创建新的线程,这时候才有两个线程;代码通过系统调用,请求OS分配一个新的线程,与原来的线程并行的执行一段代码

sleep(10)

print(‘main thread end.‘)

为什么需要多线程?

多线程给一个程序并行执行代码的能力

同时处理多个任务

$convert

>>convert 1.avi

>>convert 2.avi

常见的:UI线程、任务线程 task exeute

例子:主线程等待子线程结束

# coding=utf8

import threading

from time import sleep, ctime获取当前时间
def thread1_entry(nsec):

   print(‘child thread 1, start at:‘, ctime())

   sleep(nsec)

   print(‘child thread 1, end at:‘, ctime())
def thread2_entry(nsec):

   print(‘child thread 2, start at:‘, ctime())

   sleep(nsec)

   print(‘child thread 2, end at:‘, ctime())
if __name__==‘__main__‘:

   print(‘main thread start.‘)

   # 创建线程对象, 指定了新线程的入口函数

   t1 = threading.Thread(target=thread1_entry, args=(1,))

   t2 = threading.Thread(target=thread2_entry, args=(2,))
  # 启动新线程

  t1.start()

  t2.start()
  # 等t1 线程结束

   t1.join()

  # 等t2 线程结束

   t2.join()

   print(‘main thread end.‘)

以上是关于多线程开发+多线程使用共享数据-17的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发多线程篇 03 —线程安全

多线程(下)

高并发多线程基础之线程间通信与数据共享及其应用

Java多线程开发|volatile与伪共享问题

Python多任务之多线程开发

ArcEngine多线程开发