windows服务开发

myiszjf 2018-06-24 05:43:19
请问windows服务开发中,
每个客户端每5秒发送过来一包定位数据,此外还有一些其他的数据包(这些数据包不频繁),我服务收到数据后扔给一个完成端口队列,发现数据处理速度比较慢,请问有什么方法来处理这些定位包呢?
...全文
197 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
myiszjf 2018-06-28
  • 打赏
  • 举报
回复
引用 8 楼 goldenhawking 的回复:
[quote=引用 2 楼 myiszjf 的回复:]
[quote=引用 1 楼 goldenhawking 的回复:]
你是说堵在这个队列上了吧!就是收到数据包来得及入队,但是队列越来越堵哈!
对这种多源数据,如果大部分类别处理非常快,少量类别慢,可以用流水之类的技术,
可以参考这个架构
一种基于Qt的可伸缩的全异步C/S架构服务器实现(三) 流水线结构线程池设计

您好,您的这种架构模式是单线程单队列,如果对于很多个客户端,岂不是每个客户端都需要创建一个线程,这种选择会好吗?[/quote]

哦!是多线程、单队列。
比如,目前队列有102个任务,你有8个核心,开了8个线程,正在干活。
时刻1,线程3做完了一个任务,从队列首部取出一个,接着做。此时队列101个。
时刻2,线程7做的任务超过了粒度门限,仅完成10%, 则把该任务放回队列尾部,并从首部取出一个任务,接着做。此时队列101个。
时刻3,线程1做完了一个任务,从队列首部取出一个,接着做。此时队列100个
时刻4,新任务入队,可以放在队列尾部,也可以放在首部。要看具体业务需要。此时队列101个
时刻5,线程2做的任务超过了粒度门限,仅完成32%,则把该任务放回队列尾部,并从首部取出一个任务,接着做。此时队列101个。
[/quote]
嗯,找着了,谢谢了
结贴了
myiszjf 2018-06-28
  • 打赏
  • 举报
回复
引用 8 楼 goldenhawking 的回复:
[quote=引用 2 楼 myiszjf 的回复:]
[quote=引用 1 楼 goldenhawking 的回复:]
你是说堵在这个队列上了吧!就是收到数据包来得及入队,但是队列越来越堵哈!
对这种多源数据,如果大部分类别处理非常快,少量类别慢,可以用流水之类的技术,
可以参考这个架构
一种基于Qt的可伸缩的全异步C/S架构服务器实现(三) 流水线结构线程池设计

您好,您的这种架构模式是单线程单队列,如果对于很多个客户端,岂不是每个客户端都需要创建一个线程,这种选择会好吗?[/quote]

哦!是多线程、单队列。
比如,目前队列有102个任务,你有8个核心,开了8个线程,正在干活。
时刻1,线程3做完了一个任务,从队列首部取出一个,接着做。此时队列101个。
时刻2,线程7做的任务超过了粒度门限,仅完成10%, 则把该任务放回队列尾部,并从首部取出一个任务,接着做。此时队列101个。
时刻3,线程1做完了一个任务,从队列首部取出一个,接着做。此时队列100个
时刻4,新任务入队,可以放在队列尾部,也可以放在首部。要看具体业务需要。此时队列101个
时刻5,线程2做的任务超过了粒度门限,仅完成32%,则把该任务放回队列尾部,并从首部取出一个任务,接着做。此时队列101个。
[/quote]
谢谢,找了好久没找着源码,请问源码在哪里呢,可以参考下吗?
myiszjf 2018-06-25
  • 打赏
  • 举报
回复
对于服务中如何选择任务处理模式呢?我个人觉得单线程单队列总感觉如果每个客户端过来都给他分配一个队列,将会导致线程很多。但是多线程单队列,所有客户端收到的数据包都扔到一个队列里面,用线程池来处理,每个客户端的定位数据包很多,会导致拥堵,所以现在就是很疑惑到底该如何选择,求大神解惑。
赵4老师 2018-06-25
  • 打赏
  • 举报
回复
CSDN缩小了粘贴代码的最大字节数,楼主就凑合看吧。
想看到完整的例子,百度搜“zhao4zhong1 取两个字节打印 site:bbs.csdn.net”
赵4老师 2018-06-25
  • 打赏
  • 举报
回复
理解讨论之前请先学会如何观察

仅供参考:
//循环向a函数每次发送200个字节长度(这个是固定的)的buffer,
//a函数中需要将循环传进来的buffer,组成240字节(也是固定的)的新buffer进行处理,
//在处理的时候每次从新buffer中取两个字节打印
#ifdef _MSC_VER
#pragma warning(disable:4996)
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef _MSC_VER
#include <windows.h>
#include <process.h>
#include <io.h>
#define MYVOID void
#define vsnprintf _vsnprintf
#else
#include <unistd.h>
#include <sys/time.h>
#include <pthread.h>
#define CRITICAL_SECTION pthread_mutex_t
#define MYVOID void *
#endif
//Log{
#define MAXLOGSIZE 20000000
#define MAXLINSIZE 16000
#include <time.h>
#include <sys/timeb.h>
#include <stdarg.h>
char logfilename1[]="MyLog1.log";
char logfilename2[]=
赵4老师 2018-06-25
  • 打赏
  • 举报
回复
无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
myiszjf 2018-06-25
  • 打赏
  • 举报
回复
引用 1 楼 goldenhawking 的回复:
你是说堵在这个队列上了吧!就是收到数据包来得及入队,但是队列越来越堵哈!
对这种多源数据,如果大部分类别处理非常快,少量类别慢,可以用流水之类的技术,
可以参考这个架构
一种基于Qt的可伸缩的全异步C/S架构服务器实现(三) 流水线结构线程池设计

您好,您的这种架构模式是单线程单队列,如果对于很多个客户端,岂不是每个客户端都需要创建一个线程,这种选择会好吗?
赵4老师 2018-06-25
  • 打赏
  • 举报
回复
参考epoll源代码片断?
  • 打赏
  • 举报
回复
引用 2 楼 myiszjf 的回复:
[quote=引用 1 楼 goldenhawking 的回复:]
你是说堵在这个队列上了吧!就是收到数据包来得及入队,但是队列越来越堵哈!
对这种多源数据,如果大部分类别处理非常快,少量类别慢,可以用流水之类的技术,
可以参考这个架构
一种基于Qt的可伸缩的全异步C/S架构服务器实现(三) 流水线结构线程池设计

您好,您的这种架构模式是单线程单队列,如果对于很多个客户端,岂不是每个客户端都需要创建一个线程,这种选择会好吗?[/quote]

哦!是多线程、单队列。
比如,目前队列有102个任务,你有8个核心,开了8个线程,正在干活。
时刻1,线程3做完了一个任务,从队列首部取出一个,接着做。此时队列101个。
时刻2,线程7做的任务超过了粒度门限,仅完成10%, 则把该任务放回队列尾部,并从首部取出一个任务,接着做。此时队列101个。
时刻3,线程1做完了一个任务,从队列首部取出一个,接着做。此时队列100个
时刻4,新任务入队,可以放在队列尾部,也可以放在首部。要看具体业务需要。此时队列101个
时刻5,线程2做的任务超过了粒度门限,仅完成32%,则把该任务放回队列尾部,并从首部取出一个任务,接着做。此时队列101个。
  • 打赏
  • 举报
回复
你是说堵在这个队列上了吧!就是收到数据包来得及入队,但是队列越来越堵哈!
对这种多源数据,如果大部分类别处理非常快,少量类别慢,可以用流水之类的技术,
可以参考这个架构
一种基于Qt的可伸缩的全异步C/S架构服务器实现(三) 流水线结构线程池设计
《ASP.NET开发典型模块大全(修订版)》以关键技术和热点技术为核心,通过27个典型模块和5章热点技术,全面地介绍了如何使用asp.net进行各领域的web项目开发。全书共3篇分为32章,第1篇关键模块篇,覆盖网站开发的关键领域,内容涉及论坛、博客、播客、网络硬盘、电子邮件、在线考试、网站备忘录、在线短消息、网站访问量统计与分析、系统后台管理权限分配等网站关键模块;第2篇常见模块篇,覆盖网站开发的各个领域,内容涉及网站会员注册及登录、会员密码找回、留言本、上传与下载、图片资源管理、搜索引擎、网上问卷调查、rss在线订阅、聊天室、购物车、在线银行支付、手机短消息管理、在线音乐、投票系统、万能打印、数据自动备份与恢复等常见模块;第3篇热点技术应用篇,解决网站开发在某个领域遇到的技术难题,内容涉及linq数据访问技术、安全技术、服务技术、ajax、高级应用技术等。 《ASP.NET开发典型模块大全(修订版)》附有配套光盘。光盘提供了书中所有案例的全部源代码,并经过精心调试,在windows xp和windows 2000下全部通过,保证能够正常运行。此外,光盘中还提供有编程词典试用版软件。 《ASP.NET开发典型模块大全(修订版)》案例涉及领域广泛,实用性非常强。学习本书读者可以了解各个领域的特点,能够针对某一行业进行软件开发,也可以通过光盘中提供的模块源代码进行二次开发,以减少开发系统所需要的时间。本书适合各级软件开发人员学习使用,也可供大、中专院校师生学习参考。

65,187

社区成员

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

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