kernel-线程thread

kernel线程管理在2.6 一般是:

#include<pthread.h>

pthread_ttid; sigset_tset;

voidmyfunc()

{

 printf("hello\n");

}

intmain(){

创造线程

pthread_create(&tid,NULL,mythread,NULL);

退出线程

pthread_kill(tid,SIGUSR2);

等待线程结束

pthread_join(tid,&status);

}

到了3.0 提出了一个更加简单的线程管理方法:

kthread_create:创建线程。

struct task_struct *kthread_create(int (*threadfn)(void *data),void *data,const char *namefmt, ...);

线程创建后,不会马上运行,而是需要将kthread_create() 返回的task_struct指针传给wake_up_process(),然后通过此函数运行线程。

kthread_run :创建并启动线程的函数:

struct task_struct *kthread_run(int (*threadfn)(void *data),void *data,const char *namefmt, ...);

kthread_stop:通过发送信号给线程,使之退出。

int kthread_stop(struct task_struct *thread);

线程一旦启动起来后,会一直运行,除非该线程主动调用do_exit函数,或者其他的进程调用kthread_stop函数,结束线程的运行。

但如果线程函数正在处理一个非常重要的任务,它不会被中断的。当然如果线程函数永远不返回并且不检查信号,它将永远都不会停止。

引用文件

#include <linux/kthread.h>

创造线程结构

staticstruct task_struct *test_task;

test_task = kthread_create(test_thread, NULL, "test_task");

启动线程

wake_up_process(test_task);

关闭线程

kthread_stop(test_task);

时间: 2024-12-24 09:35:58

kernel-线程thread的相关文章

Android Framework中的线程Thread及它的threadLoop方法

当初跟踪Camera的代码中的时候一直追到了HAL层,而在Framework中的代码看见了若干个Thread.它们普遍的特点就是有一个threadLoop方法.按照字面的意思应该是这个线程能够循环处理数据.对应我想到到了java上层中的HandlerThread,这个估计也差不多,但当时心里总有一个疙瘩,想弄清楚它到底是怎么循环起来的. Android中java世界的Thread 先来看看java是怎么创建一个线程的.这个是最舒服的,也是我最熟悉的. new Thread(new Runnabl

C++跨平台技术 - 线程Thread

跨平台是什么意思呢?先了解一下平台的概念以及平台的差异.我们知道一个VC编译出来的*.exe是不能在Linux运行的,不能运行的原因可以概括为以下几个方面: 1. 文件的结构与格式 可执行程序是按定义好的格式来组织的, Microsoft 他 GNU对程序文件的定义是不一样的,如GNU使用 ELF格式定义.也就是说,当操作系统(Windows/Linux)试图把一个程序文件加载到内存里准备运行的时候,它可能会发现这个文件格式不对. 2. 依赖库 程序的最基本的运行库是C runtime,比如你调

Lua 学习笔记(九)协同程序(线程thread)

协同程序与线程thread差不多,也就是一条执行序列,拥有自己独立的栈.局部变量和命令指针,同时又与其他协同程序共享全局变量和其他大部分东西.从概念上讲线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行.也就是说多个协同程序在任意时刻只能运行一个协同程序,只有当正在运行的协同程序显式的要求挂起时,它的执行才会暂停. 一.协同程序coroutine Lua将所有关于协同程序的函数放置在一个名为“coroutine”的table中. 1.coro

Android---认识线程(Thread)模式

所谓线程(Thread) 是指一串连续的执行动作,以达成一项目的. 电脑内部都有数串连续性的动作同时在进行.也就是有多条线程并行地 (Concurrently)执行. 在电脑中,若电脑拥有多颗CPU,则每颗CPU可各照顾一个线程,于是可多个线程同时间进行.若只有单一CPU,则此CPU 可同时(Concurrently)照顾数个线程. 无论是多CPU或单一CPU的电脑,多条线程并行地执行,都可增加执行效率. 在Android平台里也不例外,无论是在Java 层或是C++层,都常常见到多条线程并行

进程,线程(thread)

每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段, 它可以在程序里独立执行.也可把它理解为代码运行的上下文.线程基本上是轻量级的进程,它负责在 单个程序里执行多任务.线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完 成不同的工作,叫做多线程.线程好处是可以把占据时间长的程序中的任务放到后台去处理 进程,线程(thread)

Thread 守护线程 Thread.setDaemon详解

java中线程分为两种类型:用户线程和守护线程.通过Thread.setDaemon(false)设置为用户线程:通过Thread.setDaemon(true)设置为守护线程.如果不设置次属性,默认为用户线程. 用户线程和守护线程的区别: 1. 主线程结束后用户线程还会继续运行,JVM存活:主线程结束后守护线程和JVM的状态又下面第2条确定. 2.如果没有用户线程,都是守护线程,那么JVM结束(随之而来的是所有的一切烟消云散,包括所有的守护线程). 补充说明: 定义:守护线程--也称“服务线程

Android—— 线程 thread 两种实现方法!(转)

原文地址:http://blog.csdn.net/boyupeng/article/details/6208072 这篇文章中有三点需要提前说明一下, 一: 在android中有两种实现线程thread的方法: 一种是,扩展java.lang.Thread类 另一种是,实现Runnable接口 二:Thread类代表线程类,它的两个最主要的方法是: run()——包含线程运行时所执行的代码 Start()——用于启动线程 三: Handler 机制,它是Runnable和Activity交互的

线程Thread类的start()方法和run()方法

一.初识 java的线程是通过java.lang.Thread类来实现的.VM启动时会有一个由主方法所定义的线程.可以通过创建Thread的实例来创建新的线程.每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体.通过调用Thread类的start()方法来启动一个线程. 在Java当中,线程通常都有五种状态,创建.就绪.运行.阻塞和死亡. 第一是创建状态.在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态. 第二是就绪状态.

进程(process)和线程(thread)

来源:阮一峰 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 其实做一个很好的类比,就可以把它们解释地清晰易懂. 1.计算机的核心是CPU,它承担了所有的计算任务.它就像一座工厂,时刻在运行. 2.假定工厂的电力有限,一次只能供给一个车间使用.也就是说,一个车间开工的时候,其他车间都必须停工.背后的含义就是,单个CPU一次只能运行一个任务. 3.进程就好比工厂的车间,它代表CPU所能处理的单个任务.任一时刻,CPU总是运行一个进程,其他进程处于非

从Cts测试testCheckForDuplicateOutput到linux kernel中Thread消耗PID

最近折腾CTS android.security.cts testCheckForDuplicateOutput项,单项测试很容易过,但是联测就挂了. 源码:http://xdecay.com/docs/android-sdk/cts/tests/tests/security/d0/db5/_cloned_secure_random_test_8java_source.php 测试的原理是:不停的创建和关闭进程,测试Pass的前提是出现两个Pid相同的进程.. 循环过程如下: a). 创建进程A