Linux 内核线程间同步
来源:互联网 发布:网络监控是什么意思 编辑:程序博客网 时间:2024/06/05 18:01
用户空间的线程间同步机制最终需要内核提供相应的wait, wake up, schedule机制。如果是内核线程间的同步就是直接对这些wait,wake up,schedule的应用。
信号量的使用:
struct semaphore sem1,sem2;
sema_init(&sem1, 0);
sema_init(&sem2, 0);
void thread1(void*)
{
while(!kthread_should_stop())
{
down(&sem1);
/*process job*/
up(&sem2);
}
}
void thread2(void*)
{
while(!kthread_should_stop())
{
down(&sem2);
/*process job*/
up(&sem1);
}
}
/*down / up 操作也是对wait, wake up, schedule的封装*/
互斥锁和“条件变量“的使用:
Struct task_struct *thread0,*thread1;
Struct mutex *mutex;
wait_queue_head_t wq;
int condition ;
void thread0_process(void*)
{
set_current_state(TASK_INTERRUPTIBLE);
while(!kthread_should_stop())
{
mutex_lock(&mutex);
while (condition is false) //这里用while而不是if
thread_suspend();
/*processjob*/
mutex_unlock(&mutex);
}
}
void thread1_process(void*)
{
set_current_state(TASK_INTERRUPTIBLE);
while(!kthread_should_stop())
{
mutex_lock(&mutex);
if (condition is true)
thread_resume();
mutex_unlock(&mutex);
}
}
thread_init ()
{
thread0 = kthread_create(thread0_process,NULL,”thread0”);
wake_up_process(thread0);
}
thread_exit()
{
kthread_stop(thread0);
}
/* 相当于pthread的pthread_cond_wait*/
thread_suspend(void)
{
init_waitqueue_head(&wq);
mutex_unlock(&mutex);
wait_event_interruptible(wq,0);
mutex_lock(&mutex) ;
}
/* 相当于pthread的pthread_cond_signal*/
thread_resume(void)
{
wake_up_interruptible(wq);
}
- Linux 内核线程间同步
- Linux内核同步,进程,线程同步
- Linux内核同步,进程,线程同步
- Linux内核同步/进程/线程同步
- Linux内核同步,进程,线程同步
- Linux内核同步,进程,线程同步
- linux内核栈,内核同步,用户空间线程同步
- linux内核栈,内核同步,用户空间线程同步
- Linux内核同步,进程,线程同步各种方法
- linux内核-内核同步
- 关于linux内核中多进程(线程)间同步和互斥
- 关于linux内核中多进程(线程)间同步和互斥
- 关于linux内核中多进程(线程)间同步和互斥
- linux内核中多进程(线程)间同步和互斥
- Linux 用户线程间同步
- linux 线程 线程同步
- Linux内核-内核线程
- linux内核笔记-内核同步
- matlab中 灰度值到图片的转换
- 如何正确调整PHP上传附件大小限制
- 夫妻开设的智能教育网站Lynda不花一分钱狂赚7000万美金
- 内存管理的实用规则
- new和malloc 区别和联系
- Linux 内核线程间同步
- 返回临时变量的引用
- CS/CSS架构应用的软件性能测试模型分析
- Ubuntu升级到12.04后Subclipse报Failed to load JavaHL Library错误的解决方法
- 为redhat增加apt包管理功能
- 处理xml格式接口
- 新浪微博Android客户端学习记录四:完成OAuth认证
- 在CDN环境下的网站 面临着新的安全威胁
- Android中的权限