博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
work_on_cpu
阅读量:4216 次
发布时间:2019-05-26

本文共 914 字,大约阅读时间需要 3 分钟。

每个cpu上都有一个workqueue,在实际使用过程中可以很方面的通过work_on_cpu来让一个函数运行在指定cpu上的thread context中其源码分析如下:long work_on_cpu(int cpu, long (*fn)(void *), void *arg){	struct work_for_cpu wfc = { .fn = fn, .arg = arg };	#新建一个work	INIT_WORK_ONSTACK(&wfc.work, work_for_cpu_fn);	#在percpu上的workqueue中调度这个work	schedule_work_on(cpu, &wfc.work);	#等待这个work 执行完	flush_work(&wfc.work);	#销毁这个work	destroy_work_on_stack(&wfc.work);	return wfc.ret;}从schedule_work_on 看是将work当道system_wq这个qorkqueue中运行,这个workque是系统已经建立好的,不需要用户建立static inline bool schedule_work_on(int cpu, struct work_struct *work){	return queue_work_on(cpu, system_wq, work);}从flush_work 的实现看这里会通过wait_for_completion 来等待这个work执行完成bool flush_work(struct work_struct *work){	struct wq_barrier barr;	if (WARN_ON(!wq_online))		return false;	if (start_flush_work(work, &barr)) {		wait_for_completion(&barr.done);		destroy_work_on_stack(&barr.work);		return true;	} else {		return false;	}}

转载地址:http://gnnmi.baihongyu.com/

你可能感兴趣的文章
【屌丝程序的口才逆袭演讲稿50篇】第十篇:程序员们请看看外面的世界吧【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十一篇:马云乌镇40分钟演讲实录【张振华.Jack】
查看>>
Java并发编程从入门到精通 张振华.Jack --我的书
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十二篇:世界上最快的捷径【张振华.Jack】
查看>>
Android中Java代码和XML布局效率问题
查看>>
android TextView属性大全(转)
查看>>
Conclusion for Resource Management
查看>>
Conclusion for Constructors,Destructors,and Assignment Operators
查看>>
Conclusion for Accustoming Yourself to C++
查看>>
面试题1:赋值运算函数(offer)
查看>>
Mark : MessagePack简介及使用
查看>>
Mark : Hadoop Raid-实战经验总结
查看>>
Structured Streaming 实现思路与实现概述
查看>>
Apache Spark 2.2.0 中文文档 - Structured Streaming 编程指南 | ApacheCN
查看>>
Mark:大数据最佳学习路线
查看>>
Spark 多线程模型
查看>>
编程第一性原则
查看>>
Mark : SpringBoot核心-非关系型数据库NoSQL
查看>>
Mark : hive文件存储格式
查看>>
mark : hadoop 四种压缩格式
查看>>