[Prj] 进程遍历中的加锁
来源:百度文库 编辑:神马文学网 时间:2024/04/28 15:03:37
1. 写一个视频服务器: 客户通过多线程来读取数据。 之所以用多线程,是为了增加传输速度。 用多线程发送速度快一些。
不太明白
能不能说详细点
我的程序是这样的
监听的时候,如果有客户连接则创建一个线程并将缓冲区的数据发送给客户端
问题是客户端显示的画面好像不连续而且不同步
---
如果你需要发给多个客户 那可以考虑使用udp多播的方式 单个线程就可以发给多个客户
2. 写一个Linux文件系统, 以ext2 或ext3文件作为磁盘
============================================
发信人: ychu (Gone!), 信区: KernelTech
标 题: [合集]进程遍历中的加锁
发信站: 水木社区 (Mon Oct 1 17:29:14 2007), 站内
☆─────────────────────────────────────☆
mablexidana (专业课) 于 (Tue Sep 18 09:48:57 2007) 提到:
想求个
遍历系统进程的程序~~
万分感谢~
☆─────────────────────────────────────☆
gqlu (恋上此生) 于 (Tue Sep 18 09:52:10 2007) 提到:
可以先找到init进程,然后遍历之。
【 在 mablexidana (专业课) 的大作中提到: 】
: 想求个
: 遍历系统进程的程序~~
: 万分感谢~
: ...................
☆─────────────────────────────────────☆
mablexidana (专业课) 于 (Tue Sep 18 10:00:05 2007) 提到:
没写过内核的程序,呵呵
【 在 gqlu (恋上此生) 的大作中提到: 】
: 可以先找到init进程,然后遍历之。
☆─────────────────────────────────────☆
luohandsome (苹果王子) 于 (Tue Sep 18 10:07:59 2007) 提到:
2.6内核
用for_each_process宏。
不过没有0号进程。
//process.c
#include
#include
#include
#include
#include
#include
#include
#include
static int __init process_init(void)
{
int result=0;
struct task_struct *p;
read_lock_irq(&tasklist_lock);
for_each_process (p) {
printk("pid=%d,name=%s\n",p->tgid,p->comm);
}
read_unlock_irq(&tasklist_lock);
return result;
}
static void __exit process_exit(void)
{
printk("unreg success\n");
}
module_init (process_init);
module_exit (process_exit);
MODULE_LICENSE("GPL");
//Makefile
obj-m := process.o
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
$(MAKE) -C $(KERNELDIR) M=$(PWD)
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
【 在 mablexidana (专业课) 的大作中提到: 】
: 想求个
: 遍历系统进程的程序~~
: 万分感谢~
: ...................
☆─────────────────────────────────────☆
mablexidana (专业课) 于 (Tue Sep 18 10:17:00 2007) 提到:
非常感谢~
【 在 luohandsome (苹果王子) 的大作中提到: 】
: 2.6内核
: 用for_each_process宏。
: 不过没有0号进程。
: ...................
☆─────────────────────────────────────☆
wheelz (心魔) 于 (Tue Sep 18 10:31:46 2007) 提到:
在for_each_process()前后,好像需要read_lock_irq(&tasklist_lock);
【 在 luohandsome (苹果王子) 的大作中提到: 】
: 2.6内核
: 用for_each_process宏。
: 不过没有0号进程。
: ...................
☆─────────────────────────────────────☆
mablexidana (专业课) 于 (Tue Sep 18 10:47:24 2007) 提到:
read_lock(&tasklist_lock);
是这个,还是read_lock_irq?
【 在 wheelz (心魔) 的大作中提到: 】
: 在for_each_process()前后,好像需要read_lock_irq(&tasklist_lock);
☆─────────────────────────────────────☆
wheelz (心魔) 于 (Tue Sep 18 10:58:24 2007) 提到:
嗯,可能read_lock()就够了,没仔细研究过这个地方。
【 在 mablexidana (专业课) 的大作中提到: 】
: read_lock(&tasklist_lock);
: 是这个,还是read_lock_irq?
☆─────────────────────────────────────☆
luohandsome (苹果王子) 于 (Tue Sep 18 12:22:12 2007) 提到:
read_lock_irq(&tasklist_lock);
read_unlock_irq(&tasklist_lock);
在void normalize_rt_tasks(void)里是这样的
【 在 wheelz (心魔) 的大作中提到: 】
: 嗯,可能read_lock()就够了,没仔细研究过这个地方。
☆─────────────────────────────────────☆
luohandsome (苹果王子) 于 (Tue Sep 18 12:22:27 2007) 提到:
已更正,呵呵
【 在 wheelz (心魔) 的大作中提到: 】
: 在for_each_process()前后,好像需要read_lock_irq(&tasklist_lock);
☆─────────────────────────────────────☆
mablexidana (专业课) 于 (Tue Sep 18 12:37:29 2007) 提到:
我加的是read_lock发现也行
#include
#include
#include
static int __init process_init(void)
{
int result = 0;
struct task_struct *p;
read_lock(&tasklist_lock);//锁
for_each_process(p)
{
printk("pid=%d,name=%s\n",p->tgid,p->comm);
}
read_unlock(&tasklist_lock);
return result;
}
static void __exit process_exit(void)
{
printk("process_exit");
}
module_init(process_init);
module_exit(process_exit);
MODULE_LICENSE("GPL");
【 在 luohandsome (苹果王子) 的大作中提到: 】
: 已更正,呵呵
☆─────────────────────────────────────☆
luohandsome (苹果王子) 于 (Tue Sep 18 12:48:00 2007) 提到:
read_lock是不关中断的。
read_lock_irq关中断。
就这点区别。
【 在 mablexidana (专业课) 的大作中提到: 】
: 我加的是read_lock发现也行
: #include
: #include
: ...................
☆─────────────────────────────────────☆
ychu (Gone!) 于 (Tue Sep 18 13:02:59 2007) 提到:
从消除隐患的情况看,还是使用read_lock_irq.
【 在 luohandsome (苹果王子) 的大作中提到: 】
: 已更正,呵呵
☆─────────────────────────────────────☆
wheelz (心魔) 于 (Tue Sep 18 14:07:03 2007) 提到:
似乎也有很多地方用的是没有_irq后缀的。
【 在 luohandsome (苹果王子) 的大作中提到: 】
: read_lock_irq(&tasklist_lock);
: read_unlock_irq(&tasklist_lock);
: 在void normalize_rt_tasks(void)里是这样的
: ...................
※ 修改:·ychu 于 Oct 1 17:30:32 修改本文·[FROM: 222.35.2.*]
不太明白
能不能说详细点
我的程序是这样的
监听的时候,如果有客户连接则创建一个线程并将缓冲区的数据发送给客户端
问题是客户端显示的画面好像不连续而且不同步
---
如果你需要发给多个客户 那可以考虑使用udp多播的方式 单个线程就可以发给多个客户
2. 写一个Linux文件系统, 以ext2 或ext3文件作为磁盘
============================================
发信人: ychu (Gone!), 信区: KernelTech
标 题: [合集]进程遍历中的加锁
发信站: 水木社区 (Mon Oct 1 17:29:14 2007), 站内
☆─────────────────────────────────────☆
mablexidana (专业课) 于 (Tue Sep 18 09:48:57 2007) 提到:
想求个
遍历系统进程的程序~~
万分感谢~
☆─────────────────────────────────────☆
gqlu (恋上此生) 于 (Tue Sep 18 09:52:10 2007) 提到:
可以先找到init进程,然后遍历之。
【 在 mablexidana (专业课) 的大作中提到: 】
: 想求个
: 遍历系统进程的程序~~
: 万分感谢~
: ...................
☆─────────────────────────────────────☆
mablexidana (专业课) 于 (Tue Sep 18 10:00:05 2007) 提到:
没写过内核的程序,呵呵
【 在 gqlu (恋上此生) 的大作中提到: 】
: 可以先找到init进程,然后遍历之。
☆─────────────────────────────────────☆
luohandsome (苹果王子) 于 (Tue Sep 18 10:07:59 2007) 提到:
2.6内核
用for_each_process宏。
不过没有0号进程。
//process.c
#include
#include
#include
#include
#include
#include
#include
#include
static int __init process_init(void)
{
int result=0;
struct task_struct *p;
read_lock_irq(&tasklist_lock);
for_each_process (p) {
printk("pid=%d,name=%s\n",p->tgid,p->comm);
}
read_unlock_irq(&tasklist_lock);
return result;
}
static void __exit process_exit(void)
{
printk("unreg success\n");
}
module_init (process_init);
module_exit (process_exit);
MODULE_LICENSE("GPL");
//Makefile
obj-m := process.o
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
$(MAKE) -C $(KERNELDIR) M=$(PWD)
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
【 在 mablexidana (专业课) 的大作中提到: 】
: 想求个
: 遍历系统进程的程序~~
: 万分感谢~
: ...................
☆─────────────────────────────────────☆
mablexidana (专业课) 于 (Tue Sep 18 10:17:00 2007) 提到:
非常感谢~
【 在 luohandsome (苹果王子) 的大作中提到: 】
: 2.6内核
: 用for_each_process宏。
: 不过没有0号进程。
: ...................
☆─────────────────────────────────────☆
wheelz (心魔) 于 (Tue Sep 18 10:31:46 2007) 提到:
在for_each_process()前后,好像需要read_lock_irq(&tasklist_lock);
【 在 luohandsome (苹果王子) 的大作中提到: 】
: 2.6内核
: 用for_each_process宏。
: 不过没有0号进程。
: ...................
☆─────────────────────────────────────☆
mablexidana (专业课) 于 (Tue Sep 18 10:47:24 2007) 提到:
read_lock(&tasklist_lock);
是这个,还是read_lock_irq?
【 在 wheelz (心魔) 的大作中提到: 】
: 在for_each_process()前后,好像需要read_lock_irq(&tasklist_lock);
☆─────────────────────────────────────☆
wheelz (心魔) 于 (Tue Sep 18 10:58:24 2007) 提到:
嗯,可能read_lock()就够了,没仔细研究过这个地方。
【 在 mablexidana (专业课) 的大作中提到: 】
: read_lock(&tasklist_lock);
: 是这个,还是read_lock_irq?
☆─────────────────────────────────────☆
luohandsome (苹果王子) 于 (Tue Sep 18 12:22:12 2007) 提到:
read_lock_irq(&tasklist_lock);
read_unlock_irq(&tasklist_lock);
在void normalize_rt_tasks(void)里是这样的
【 在 wheelz (心魔) 的大作中提到: 】
: 嗯,可能read_lock()就够了,没仔细研究过这个地方。
☆─────────────────────────────────────☆
luohandsome (苹果王子) 于 (Tue Sep 18 12:22:27 2007) 提到:
已更正,呵呵
【 在 wheelz (心魔) 的大作中提到: 】
: 在for_each_process()前后,好像需要read_lock_irq(&tasklist_lock);
☆─────────────────────────────────────☆
mablexidana (专业课) 于 (Tue Sep 18 12:37:29 2007) 提到:
我加的是read_lock发现也行
#include
#include
#include
static int __init process_init(void)
{
int result = 0;
struct task_struct *p;
read_lock(&tasklist_lock);//锁
for_each_process(p)
{
printk("pid=%d,name=%s\n",p->tgid,p->comm);
}
read_unlock(&tasklist_lock);
return result;
}
static void __exit process_exit(void)
{
printk("process_exit");
}
module_init(process_init);
module_exit(process_exit);
MODULE_LICENSE("GPL");
【 在 luohandsome (苹果王子) 的大作中提到: 】
: 已更正,呵呵
☆─────────────────────────────────────☆
luohandsome (苹果王子) 于 (Tue Sep 18 12:48:00 2007) 提到:
read_lock是不关中断的。
read_lock_irq关中断。
就这点区别。
【 在 mablexidana (专业课) 的大作中提到: 】
: 我加的是read_lock发现也行
: #include
: #include
: ...................
☆─────────────────────────────────────☆
ychu (Gone!) 于 (Tue Sep 18 13:02:59 2007) 提到:
从消除隐患的情况看,还是使用read_lock_irq.
【 在 luohandsome (苹果王子) 的大作中提到: 】
: 已更正,呵呵
☆─────────────────────────────────────☆
wheelz (心魔) 于 (Tue Sep 18 14:07:03 2007) 提到:
似乎也有很多地方用的是没有_irq后缀的。
【 在 luohandsome (苹果王子) 的大作中提到: 】
: read_lock_irq(&tasklist_lock);
: read_unlock_irq(&tasklist_lock);
: 在void normalize_rt_tasks(void)里是这样的
: ...................
※ 修改:·ychu 于 Oct 1 17:30:32 修改本文·[FROM: 222.35.2.*]
[Prj] 进程遍历中的加锁
[Prj] 进程遍历中的加锁
如何遍历WebTable中的单元格
添加一个系统调用,遍历所有进程 - 涌泉*闪闪
在C#中怎样遍历Hashtable中的值?
在C#中怎样遍历Hashtable中的值?
全球化进程中的中国
Windows进程中的内存结构
台湾民主进程中的里程碑
股市行情进程中的心理分析
PHP中的(伪)多线程与多进程
ASP.NET 中的进程和请求标识
世界文明进程中的全球史
TASK_KILLABLE:Linux 中的新进程状态
怎么看懂任务管理器中的进程
经济全球化进程中的新世纪世界格局
学会看任务管理器中的进程
赵海均:经济发展进程中的几条分界线
中国现代化进程中的政治文化建设
学会看任务管理器中的进程
LoadRunner中的多进程和多线程
透视我国城市化进程中的“养老困局”
马克思主义中国化进程中的时代课题
二叉树及其遍历