Thread in depth 1: The basic

Every single thread has the follow elements:

  1. Thread Kernel Object:TKO is a data structure.Everytime when a thread is created,a TKO will be assigned and initialized.TKO maintains a property of descriping the thread, and thread context.
  2. Thread Environment Block,which is related to exception.
  3. User-Mode Stack: this stack stores the local variables and arguments in the method,and the returnning address of the method,so the thread can move on from this address when returned from the method.
  4. Kernel-Mode Stack:a stack which managed by OS kernel function.

Thread context switch causes a bad performence.Here is how a context switch work :OS will move the data on CPU‘s register to the current thread‘s context, then move the target thread‘s context data into the cpu register so that the cpu can do its work.

时间: 2024-12-26 00:51:14

Thread in depth 1: The basic的相关文章

Thread in depth 3:Synchronization

Synchronization means multi threads access the same resource (data, variable ,etc) should not cause a corruption to it.If all method of a class promise threading synchronization,we call that the class is "Thread Safety". ALL static methods of th

C++11 thread::join(4)

原文地址:http://www.cplusplus.com/reference/thread/thread/join/ public member function <thread> std::thread::join void join(); Join thread The function returns when the thread execution has completed. 当该线程执行完成后才返回.(即等待子线程执行完毕才继续执行主线程) This synchronizes

java 锁!

问题:如何实现死锁. 关键: 1 两个线程ta.tb 2 两个对象a.b 3 ta拥有a的锁,同时在这个锁定的过程中,需要b的锁:tb拥有b的锁,同时在这个锁定的过程中,需要a的锁: 关键的实现难点是3, —— 所以说,死锁也不是那么容易出现的吧.. 实现方式synchronized.Lock 等等 死锁例子1  采用了不同类的两个对象. 原理是: 两个线程尝试进入同一个需要对象锁的方法 package basic.thread; public class DL { public static

Java 基础 - 多线程基础

并发 并发在单核和多核 CPU 上都存在, 对于单核 CPU,通过轮训时间片的方式实现并发. 线程 线程对象 利用Thread对象, 有两种方式来创建并发程序: 直接创建并管理线程. 当程序要启动一个异步任务的时候, 直接创建一个线程. 将线程管理抽象出来, 把并发部分的任务交给 executor. 线程的创建 有两种方式创建线程: 提供一个实现Runnable接口的对象. 子类化Thread. 两种方法的优缺点? Runnable 总体来说更好一点 使用Runnable 接口的方式更加灵活,

JPDA 架构研究8 - Agent利用环境指针访问VM(堆栈管理篇)

引入: 上篇文章讲解了Agent利用环境指针访问VM的线程组操作,这里讨论下堆栈操作. 分类4:堆栈操作 a. GetStackTrace.获取某线程的堆栈. jvmtiError GetStackTrace(jvmtiEnv* env,             jthread thread,             jint start_depth,             jint max_frame_count,             jvmtiFrameInfo* frame_buff

(转)Awesome Courses

Awesome Courses  Introduction There is a lot of hidden treasure lying within university pages scattered across the internet. This list is an attempt to bring to light those awesome courses which make their high-quality material i.e. assignments, lect

VB.net学习笔记(二十五)Threading 命名空间

重要的Thread类在System.Threading中.System.Threading 命名空间提供类和接口,使多线程的编程. 除了用于同步线程活动和访问数据的类 (Mutex, ,Monitor, ,Interlocked, ,AutoResetEvent, ,依此类推),此命名空间包括 ThreadPool 类,它允许您使用的系统提供线程池和 Timer 在线程池线程执行的回调方法的类. 1.Thread 类 Thread类创建和控制线程,设置其优先级并获取其状态. 进程启动时,公共语言

JPDA 架构研究10 - Agent利用环境指针访问VM(局部变量管理篇)

引入: 上篇我们讲解了Agent如何利用环境指针访问VM的管理堆的操作.这里主要讲解如何管理局部变量. 分类6:局部变量管理 a.GetLocalObject. 获取局部对象 jvmtiError GetLocalObject(jvmtiEnv* env,             jthread thread,             jint depth,             jint slot,             jobject* value_ptr) b.GetLocalInt.

嵌套评论的数据库表设计

设计嵌套评论数据库表可仿效无限级分类,在表中加一个ParentId字段.嵌套评论页面大致这样: 评论1   回复评论1   恢复评论1评论2   回复评论2   评论3...... 但是, 在显示评论的时候,如果使用ParentId会涉及到多表的联结,嵌套层级越多意味着表之间的联结增多,这样会影响查询效率. 于是,我们想到在表中增加一个字段,用来显示所有的层级:/1/2/5/ 设计数据库和表: create database NestedCommnets use NestedCommnets C