关于优先级发送数据问题(急)

myripc 2005-09-19 06:15:35
本人有段程序,想实现基于高低优先级发送数据的程序,高优先级的数据能抢占低优先级数据发送,这里还有如果发送不成功阻塞,以后接着原队列数据的位置继续发送。
但我写的程序好像不能完成上述功能,请高手指教:

我的程序如下:
#define ID 100
#define Pri 2 //分成高低优先级队列 0高优先级,1低优先级
typedef struct TXBUF
{
int iflag;//是否有数据标识
int ilen;//数据长度
char * pchData;
}
TxBUF m_stbuffer[Pri][ID] //发送数据的结构

void SendTask()
{
int i,j;
int result;
while(1)
{
for (i=0;i<Pri;i++)
for (j=0;j<ID;j++)
{
result = Write(m_stbuffer[i][j]);//有可能阻塞,写不成功
...
}
}
}
...全文
134 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
myripc 2005-09-20
  • 打赏
  • 举报
回复
??
leifen 2005-09-20
  • 打赏
  • 举报
回复
呵呵,是啊,没问题的做好同步就OK了。
myripc 2005-09-19
  • 打赏
  • 举报
回复
必须创建两个线程(任务)吗,没有其它的方法,如果是多个优先级,岂不是要创建多个线程。操作系统中的进程调度是这样的吗?向高手请教.
leifen 2005-09-19
  • 打赏
  • 举报
回复
注:调度的时候你就可以给他们个优先权的。
呵呵 懒得想了,编了一天了,没有代码。思路大概没问题。
leifen 2005-09-19
  • 打赏
  • 举报
回复
阻塞的话你可以设置超时,缓冲区会被后来的覆盖掉的。使用两条线程,做好同步处理。当高优先级的发送线程有数据时,挂起低优先级的线程。发送完毕时恢复。大概的思路就是这样的。同步是个问题,你要做好信号的处理。
myripc 2005-09-19
  • 打赏
  • 举报
回复
真的没有办法了么?
myripc 2005-09-19
  • 打赏
  • 举报
回复
zhouhuahai(道号"虚无") 说得很对。问题关键是 “主要在于要实时调整优先级的问题了.”
myripc 2005-09-19
  • 打赏
  • 举报
回复
这里设计了二维数组是否有问题?是有两个发送队列(高和低),这里用for循环显然行不通,不能达到如果当正发送低优先级数据时,来了一个高优先级数据,这时怎么抢占掉,发送完高优先级后再回到刚开始的低优先级的数据处?
zhouhuahai 2005-09-19
  • 打赏
  • 举报
回复
结构可能还是其次,主要在于要实时调整优先级的问题了.

64,688

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧