开发一个windows service程序,要求调用两个processor的资源,可行吗?

baidu_36473732 2016-10-22 07:38:19
遇到个面试作业,要求在.NET下开发一个windows service程序,该程序要调用两个processor。
第一个processor用多线程把一批XML文件转换成JSON文件。 (-- 用多线程我会)
第二个processor把转换好的JSON文件通过email发送出去。 (-- 发邮件我也会)

我的问题是,这种程序能实现吗?这个面试问题本身是不是有问题?
我自己认为一个程序本身只能跑在一个processor上,应该没法再调用其它processor的。

请大牛指点下,这个面试问题是不是合理的,如果能实现一个服务调两个processor,能提供下学习的代码实例,代码本身可以很简单,比如转换XML成JSON,发邮件之类的都可以用空函数代替,但学要有完整的骨架,能表达清楚是用哪些类库实现调两个processor的功能的。

十分感谢。
...全文
301 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_36473732 2016-11-01
  • 打赏
  • 举报
回复
谢谢大家的关注,我发邮件跟面试官确认了,他说是没表达清楚,他说的processor是步骤或任务的意思。
Poopaye 2016-10-24
  • 打赏
  • 举报
回复
你的线程究竟在哪个cpu上执行一般由操作系统帮你分配,用不着你纠结 没有啥特殊程序,你一个程序员不会比操作系统更了解应该如何分配资源。除非像单片机这样没有操作系统。 如果是面试官问你,就这样回答他。
baidu_36473732 2016-10-22
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
[quote=引用 楼主 baidu_36473732 的回复:] 我自己认为一个程序本身只能跑在一个processor上,应该没法再调用其它processor的。
一个程序可以跑在32个内核上也没有问题! 虽然可以指定线程所使用的核心,问题是windows下其它进程也照样会使用那个核心,所以这个做法本身就是自欺欺人的。你的一般的程序,应该让windows 系统自己来调度CPU核心,你的程序应该针对系统线程(池)编程。[/quote] 面试题里用的是processor这个词,我觉得就是CPU/处理器的意思。 但你用了内核,应该指的是core的意思。 processor和内核core 是不一样的呀。 一个windows service程序能跑在两个processor(处理器)上吗? 如果一个windows service程序只能运行于一个processor(处理器)上,那这个程序能调用两个processor(处理器)来处理不同的任务吗,就像我一开始的问题里描述的那样?
baidu_36473732 2016-10-22
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
[quote=引用 2 楼 baidu_36473732 的回复:] @sp1234 谢谢,好快的回复 :) 我自己理解是只要程序里写了多线程,系统应该会自动分配不同的线程给不同的processor的。 但这个面试题明确写着要调用两个processor,因此我就觉得出问题的人是不是用错了。 如果严格按这个面试题来写代码实现功能,可能吗?
可以做大。只不过,此人出的这个问题看是高大上,其实容易误导不明真相的初级程序设计师产生错误的理解。[/quote] 我理解你说的意思了,但会不会有写程序比较特殊,需要制定不同的核心做不同的任务呢? 如果出题者故意设置这么一个别扭的问题,想看看面试者在这方面的知识和经验的话,我还是想知道怎么实现这种制定调用多核的代码。 我自己找了半天也没找到类似的例子。 你也说了可以做的,能具体说下用什么类库,或又比较类似的实例文章吗? 再次谢谢你耐心的回复。
  • 打赏
  • 举报
回复
一般的应用程序如果纠结“核心”问题硬要以为自己独占 CPU 核心,实际上就是荒唐地画蛇添足的设计。不但不能平均用到真实环境的(n个核心)所有 CPU 资源,而且也没有考虑到操作系统下其它进程也会使用到相关核心的问题。
  • 打赏
  • 举报
回复
引用 2 楼 baidu_36473732 的回复:
@sp1234 谢谢,好快的回复 :) 我自己理解是只要程序里写了多线程,系统应该会自动分配不同的线程给不同的processor的。 但这个面试题明确写着要调用两个processor,因此我就觉得出问题的人是不是用错了。 如果严格按这个面试题来写代码实现功能,可能吗?
可以做大。只不过,此人出的这个问题看是高大上,其实容易误导不明真相的初级程序设计师产生错误的理解。
  • 打赏
  • 举报
回复
引用 楼主 baidu_36473732 的回复:
我自己认为一个程序本身只能跑在一个processor上,应该没法再调用其它processor的。
一个程序可以跑在32个内核上也没有问题! 虽然可以指定线程所使用的核心,问题是windows下其它进程也照样会使用那个核心,所以这个做法本身就是自欺欺人的。你的一般的程序,应该让windows 系统自己来调度CPU核心,你的程序应该针对系统线程(池)编程。
baidu_36473732 2016-10-22
  • 打赏
  • 举报
回复
@sp1234 谢谢,好快的回复 :) 我自己理解是只要程序里写了多线程,系统应该会自动分配不同的线程给不同的processor的。 但这个面试题明确写着要调用两个processor,因此我就觉得出问题的人是不是用错了。 如果严格按这个面试题来写代码实现功能,可能吗?
  • 打赏
  • 举报
回复
windows是天然的多核多线程调度的系统,而不是低级的程序平台。你用不着纠结什么内核,你按照操作系统线程(池)概念来设计,就可以了。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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