当前位置:  技术问答>linux和unix

求信号量控制例程 up有分

    来源: 互联网  发布时间:2015-10-20

    本文导语:  我建立了1个资源(fifo),然后有1组线A和一个线程B都要访问(读写)这个资源(fifo),我用的是信号量来控制访问,能不能让线程B获得最高权限,即如果当前信号量表示为“被占用”(被线程组A中的线程占用)而...

我建立了1个资源(fifo),然后有1组线A和一个线程B都要访问(读写)这个资源(fifo),我用的是信号量来控制访问,能不能让线程B获得最高权限,即如果当前信号量表示为“被占用”(被线程组A中的线程占用)而此时线程B也要访问该该资源(fifo)则线程B可以再这个信号量被释放后立即占有该信号量而不必去和线程组A里的其他线程竞争

求解决方案和例程

谢谢各位了!!

|
我也认为只要是共享资源就存在竞争,但是不是使用消息队列就竞争少点,还要是要思考一下,反正我目前认为都竞争环境都一样,我觉得关键在如何控制竞争者,
有一个不成熟的想法,不知效率如何。。。,可 现在也没想好

|
我上面代码的主要思路是: 避免线程组A与线程B在一个信号量上排队,因为如果那样的话,
是哪个线程得到资源就是操作系统决定的,而不是按照我们的优先级。所以我让进程组
在一个信号量semA上,线程B用另一个semB,当某一线程持有semA后,该线程才有机会竞争
semB对由semB保护的共享资源进行访问.  


还有,你的方案在给distribute线程 设置线程优先级( 我没设过 ,不过可以考绿一下 ,不过这样问题就变复杂了一些

|
mark

|
再加一个信号量 nB
表示有多少个 B 在排队等待资源 
当 A 获得资源后,操作资源之前 ,检查 nB ,如果发现有 B 在排队立刻放弃资源


缺点是
1 》A 得到资源后有可能没有操作立刻放弃了,在A 中要多一个判断
2 》A 有可能饥饿,老是得不到资源,
3 》效率不高 , 明显 , A 得到资源, 然后又放弃了

|
up

|
我没能力帮你解决这个问题,但是我有能力帮你UP
所以我就尽我的能力帮你一把!
UPUPUPUPUPUPUPUPUPUP

|
up

|
问题不会
但是up可以

|
up

|
linux里有线程吗?
不都是进程吗?
大家别笑,偶刚学linux

|
不知道设置线程的优先级可否,我正在想系统是怎么调度的

------------------------------

另外一个可能常用的属性是线程的优先级,它存放在结构sched_param中。用函数 
pthread_attr_getschedparam和函数pthread_attr_setschedparam进行存放,一般说来,我们总 
是先取优先级,对取得的值修改后再存放回去。下面即是一段简单的例子。
#include 
#include 
pthread_attr_t attr;
pthread_t tid;
sched_param param;
int newprio=20;

pthread_attr_init(&attr);
pthread_attr_getschedparam(&attr, ¶m);
param.sched_priority=newprio;
pthread_attr_setschedparam(&attr, ¶m);
pthread_create(&tid, &attr, (void *)myfunction, myarg);
  

|
linux中是优先级数值越低越优先

|
线程A和线程B为什么一定要用FIFO来实现呢?消息队列不也挺好的么?而且不用太担心竞争问题。另外,如果在一个进程中,为什么大家不操作同一块内存呢?在你说的这种情况下,很有可能线程A被饿死,因为线程B将成为一个瓶颈,即使不饿死,也存在等待时间过长的情况。建议修改一下结构,不使用FIFO。

|
在网络编程里面有线程的概念啊,呵呵

网络编程你是不是用socket?

|
Study

|
专业顶贴 兼职接分

|
up

    
 
 

您可能感兴趣的文章:

  • 生产者消费者问题为什么不可以共用一个信号量,如果这个信号量可以设置取值固定为0到N,即当信号量取值为N的时候阻塞进程,是否也可以?
  • 关于信号量与UNIX信号的疑问
  • 自旋锁和读写自旋锁、信号量和读写信号量分别有什么区别?
  • semaphore.h sem.c Posix 信号量 System v 信号量
  • 当信号量(灯)遇上信号,help!
  • 书上说,中断用自旋锁,进程,用信号量,但是,为什么中断不能用信号量?
  • 关于消息队列信号量信号共享内存等核心编程的问题(求知若渴!!!.....)
  • 请问线程中的信号量,怎么设置成0,1信号量?
  • linux 中信号量的使用 当信号初始化的时候设置的值大于1将是如何?
  • 多个进程共用一个信号量,如果某个进程死掉,此时又将信号量锁定,其它进程就死掉,有什么办法可以解决这一问题
  • POSIX:有名信号量 和SYStem V的信号量 你用哪个?
  • 信号灯操作报错:semop:EINVAL(信号量集不存在或参数无效)
  • 求助一些关于信号量的问题
  • 【求助】多进程中 内核信号量无效?
  • 关于信号量的问题
  • 为什么中断不能用信号量?
  • 信号量
  • 信号量释放
  • 信号量的烦恼
  • 信号量的问题
  • 求利用命名信号量控制文件访问的问题
  • 求 思路 信号量控制函数中的线程sleep 100微秒。(linux)
  • java信号量控制线程打印顺序的示例分享
  • 关于信号量控制
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 信号量的调整值什么意思
  • 请高人指点:在unix下,如何实现二值信号量
  • 信号量实现的同步互斥机制
  • POSIX的信号量随内核存在的问题?
  • 信号量可以用于多进程多线程同时互斥不?
  • 关于信号量的问题(sem)????
  • 在linux下怎么使用信号量?
  • 进程间通信 信号量
  • 关于Linux下的信号量
  • 请问unix下如何设置信号量超时?
  • 用信号量机制解决实际的三个进程同步问题
  • 关于信号量ID的疑问
  • 请教信号量处理函数signal的问题?
  • 信号量编程!
  • 请问下,在嵌入式linux驱动里面可不可以用信号量?
  • 使用信号量如何让父子进程交替运行?
  • 操作系统中的信号量
  • 询问一个信号量问题
  • 请问:p,v对共享区进行操作时, 需要几个信号量啊,一个行不行啊?
  • 问个信号量问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3