精华区里有个100 Most productive labs, 怎么统计出来的?# Biology - 生物学g*y2010-12-06 08:121 楼http://chronicle.com/article/Teresa-Sullivan-Resigns-From/13241
b*i2010-12-06 08:123 楼要求:服务器端(嵌入式)有三个网卡,同时监听,功能类似。如果有connect就发回一个JSON,然后客户端发来一个JSON。之后,每次客户端都发一个JSON,我发回JSON。如果某一次,发来的JSON是{exit},那么这个程序将退出,就是要结束所有三个网卡的监听。一般来说,只有最多两个客户端同时接入 。如果每个网卡设置接入上限则接受新的关掉旧的。比如可以每个网卡规定最多只能三个连接。==============我用了asio,不想用boost。看到异步需要boost.bind。那么我是不是只能用同步?同步如何退出线程?是不是可以设置每个操作的时限?有人说线程增加1M内存,我用Linux,共有1G内存,应该不是问题。因为我最多9个线程在监听。另有人说,最好的退出block线程的方式是自己生成客户端来连接到监听的端口从而使block的线程进行下去然后发现共有变量设为退出了,就退出。关于异步我还有些问题,但是如果推荐同步我就不问这些问题了。
w*g2010-12-06 08:127 楼最元始的退出同步监听的办法:收到exit消息后,先设置全局标记,然后用kill传入pid=0,给本进程下所有线程发信号。像select/accept/read/write这类操作在阻塞过程中如果收到信号就会返回,错误码为EINTR。这样你就有机会干净退出了。【在 b***i 的大作中提到】: 要求:服务器端(嵌入式)有三个网卡,同时监听,功能类似。如果有connect就发回: 一个JSON,然后客户端发来一个JSON。之后,每次客户端都发一个JSON,我发回JSON。: 如果某一次,发来的JSON是{exit},那么这个程序将退出,就是要结束所有三个网卡: 的监听。: 一般来说,只有最多两个客户端同时接入 。如果每个网卡设置接入上限则接受新的关: 掉旧的。比如可以每个网卡规定最多只能三个连接。: ==============: 我用了asio,不想用boost。看到异步需要boost.bind。那么我是不是只能用同步?同步: 如何退出线程?是不是可以设置每个操作的时限?: 有人说线程增加1M内存,我用Linux,共有1G内存,应该不是问题。因为我最多9个线程
b*s2010-12-06 08:128 楼都多少年了。我当年出国前就流传很广。还有那个做得好的华人生物学家名单,也都需要更新。【在 c**a 的大作中提到】: 怎么统计出来的? 看上去有些老了,有没有更新啊?
T*i2010-12-06 08:1211 楼你这种应用,属于大马拉小车。我给你出个主意好了。你就单线程。设置每个socket成non blocking。每个循环读写完毕后等1ms。【在 b***i 的大作中提到】: 要求:服务器端(嵌入式)有三个网卡,同时监听,功能类似。如果有connect就发回: 一个JSON,然后客户端发来一个JSON。之后,每次客户端都发一个JSON,我发回JSON。: 如果某一次,发来的JSON是{exit},那么这个程序将退出,就是要结束所有三个网卡: 的监听。: 一般来说,只有最多两个客户端同时接入 。如果每个网卡设置接入上限则接受新的关: 掉旧的。比如可以每个网卡规定最多只能三个连接。: ==============: 我用了asio,不想用boost。看到异步需要boost.bind。那么我是不是只能用同步?同步: 如何退出线程?是不是可以设置每个操作的时限?: 有人说线程增加1M内存,我用Linux,共有1G内存,应该不是问题。因为我最多9个线程
s*92010-12-06 08:1213 楼这我知道啊,但Newegg上的Acer 1830T没配um啊,um是18w,m是35w,功耗相差很大【在 n******7 的大作中提到】: um是新出的低耗能版。330m 2.13Ghz. 330um 1.2ghz.
b*i2010-12-06 08:1214 楼我倾向与线程blocking,你倾向于单线程non blocking,那就不用异步了?看起来,这个和我对待串口一样,用查询方案?具体咋写?我还是要用asio的,不想用裸的C,asio不是跨平台嘛【在 T********i 的大作中提到】: 你这种应用,属于大马拉小车。: 我给你出个主意好了。你就单线程。设置每个socket成non blocking。: 每个循环读写完毕后等1ms。
n*72010-12-06 08:1216 楼http://www.newegg.com/Product/Product.aspx?Item=N82E16834115803【在 s****9 的大作中提到】: 这我知道啊,但Newegg上的Acer 1830T没配um啊,um是18w,m是35w,功耗相差很大
T*i2010-12-06 08:1217 楼线程blocking唯一的问题就是linux下,如果一个thread在读socket。另外一个threadclose socket。那个读的thread会一直block。windows下那个读的thread会立刻返回一个错误。这个世界就是不完美,大家都suck。而且各自有各自suck的地方。【在 b***i 的大作中提到】: 我倾向与线程blocking,你倾向于单线程non blocking,那就不用异步了?: 看起来,这个和我对待串口一样,用查询方案?具体咋写?我还是要用asio的,不想用: 裸的C,asio不是跨平台嘛
a*82010-12-06 08:1218 楼就是董事会的意思。http://agb.org/knowledge-center/faq/board-trustees-same-board-r【在 t*****g 的大作中提到】: Board of Visitors??? what the hell is it?
w*g2010-12-06 08:1220 楼如果只是读出来写磁盘这么做最好,但如果要解析读进来的消息,有可能消息读了一半read就返回EAGAIN了,得自己维护buffer。这样反而就麻烦了。【在 T********i 的大作中提到】: 你这种应用,属于大马拉小车。: 我给你出个主意好了。你就单线程。设置每个socket成non blocking。: 每个循环读写完毕后等1ms。
T*i2010-12-06 08:1222 楼buffer就是一个concat算法。属于最简单的算法了吧?其实他说到json。他还要计数左括号和右括号数量才行呢。这属于最简单的状态自动机了。我对他有信心。【在 w***g 的大作中提到】: 如果只是读出来写磁盘这么做最好,但如果要解析读进来的消息,: 有可能消息读了一半read就返回EAGAIN了,得自己维护buffer。这样反而就麻烦了。
d*i2010-12-06 08:1224 楼他的应用场合不应该用JSON, 应该直接用raw bytes做解析,JSON的overhead太大了。【在 T********i 的大作中提到】: buffer就是一个concat算法。属于最简单的算法了吧?: 其实他说到json。他还要计数左括号和右括号数量才行呢。: 这属于最简单的状态自动机了。我对他有信心。
s*y2010-12-06 08:1225 楼貌似学生和教工对此很不满啊【在 g**********y 的大作中提到】: http://chronicle.com/article/Teresa-Sullivan-Resigns-From/13241
T*i2010-12-06 08:1226 楼他那一个通道才几K波特率?刚才我是笔误。应该是大马拉小车。比他那个CPU性能低100倍的系统都游刃有余。现在他的任务是找到最stupid的办法。只要稳定就行。【在 d****i 的大作中提到】: 他的应用场合不应该用JSON, 应该直接用raw bytes做解析,JSON的overhead太大了。
h*e2010-12-06 08:1227 楼最新发展U.Va. Board Reinstates Sullivan as Presidenthttp://www.insidehighered.com/news/2012/06/26/uva-board-reinsta【在 g**********y 的大作中提到】: http://chronicle.com/article/Teresa-Sullivan-Resigns-From/13241
b*i2010-12-06 08:1228 楼应该是找到开发迅速,结果稳定的办法,不一定stupid啊。【在 T********i 的大作中提到】: 他那一个通道才几K波特率?刚才我是笔误。应该是大马拉小车。: 比他那个CPU性能低100倍的系统都游刃有余。: 现在他的任务是找到最stupid的办法。只要稳定就行。
b*i2010-12-06 08:1229 楼看你比较多的看法,给你个整体概念:原来系统16MHz,16M内存能够对付,要求10M以太网,FAT16。现在新的系统为什么要改这么多呢?一个是需求改成Gigabit Ethernet,无线,一个是要对未来的设备能够容易增加功能,还要面向未来。原来的系统用C,自己写没有OS的TCP/IP(库是买的),自己发明二进制的协议,和PC控制软件(MFC)一起使用。PC上直接改变嵌入式的所有变量。就是一个struct,里面内容全部被这个二进制协议改变。这样要写一个协议调试软件,解释这个二进制到底什么意思,在开发阶段帮助解决bug。电路方面自己画包括RAM,Flash, Ethernet Phy在内的所有电路。应该说,这个设备用了10年才完善起来。现在的要求是1年内完成从电路到软件的要求。所以稳定,快速开发才是最重要的。所以,我直接买板子,上面有了千兆以太网,有了SDIO接口(64G都可以用,属于SDXC),内存1G。为什么1G呢? 因为1G DDR3内存比512M便宜,而Xilinx最多只能用1G。然后使用Linux把TCP/IP, USB,Wi-Fi全都搞定。但是还剩下显示,和10个通道的串口需要自己搞一下。别人要我用uCOS。问题是uCOS并不包括其他的库,还要自己买,还不一定比Linux好呢。由于有了Linux,嵌入式已经完全变成了软件,基本不考虑嵌入式的问题。就这样还只有6个月来搞Linux软件和PC的软件。我10个通道1200-3600波特率,每个通道需要每秒大约做多6次来回。而TCP/IP用Json的通讯一年不用100次,其实就是配置的时候用一次。所以用JSON可以避免开发协议解释软件,因为人可以看懂文本文件。另外的实时需求的是Modbus TCP。这个是大约1秒一次或者几次的压力。关于面向未来,原来设计系统的退休的创业者说,他95年创业的时候,用了当时顶级的32位CPU, 后来加了FAT16进行CF操作,心想怎么都够了吧,能到2GB呢。结果现在成了瓶颈,而这个CPU从来没有升级过。所以,现在的项目要用目前顶级的设备,保证未来10年能够不至于太快过时。【在 d****i 的大作中提到】: 他的应用场合不应该用JSON, 应该直接用raw bytes做解析,JSON的overhead太大了。
b*i2010-12-06 08:1230 楼我为什么想用Java呢?就是不想自己解释JSON,我要找别人的库来解释。如果左右括号不对直接返回错误就完了。另外,我可能使用递归来解释,也不用状态机了。【在 T********i 的大作中提到】: buffer就是一个concat算法。属于最简单的算法了吧?: 其实他说到json。他还要计数左括号和右括号数量才行呢。: 这属于最简单的状态自动机了。我对他有信心。
b*i2010-12-06 08:1231 楼http://stackoverflow.com/questions/2486335/wake-up-thread-block有shutdown,有pipe的方案,虽然不是很懂,但是很诱人。thread【在 T********i 的大作中提到】: 线程blocking唯一的问题就是linux下,如果一个thread在读socket。另外一个thread: close socket。那个读的thread会一直block。: windows下那个读的thread会立刻返回一个错误。: 这个世界就是不完美,大家都suck。而且各自有各自suck的地方。
b*i2010-12-06 08:1232 楼这个在asio下难道不是eof?asio的例子写的size_t len = socket.read_some(asio::buffer(buf), error);if (error == asio::error::eof)break; // Connection closed cleanly by peer.else if (error)throw asio::system_error(error); // Some other error.thread【在 T********i 的大作中提到】: 线程blocking唯一的问题就是linux下,如果一个thread在读socket。另外一个thread: close socket。那个读的thread会一直block。: windows下那个读的thread会立刻返回一个错误。: 这个世界就是不完美,大家都suck。而且各自有各自suck的地方。