- How I Tricked Myself into Being Awesome 如何 我 装 我自己 成 牛逼状 这是装逼指南 不是真牛逼 楼上的酸葡萄可以暂停了
- ot;lockType">加锁类型 读/写</param>
/// <returns>帮手实例</returns>
public static IDisposable CreateLockScope(this ReaderWriterLockSlim instance, LockType lockType)
{
var kvp = LockDisposeDic[lockType];
return new Disposable(() => kv - 在上一篇 《对不能用using的成对操作,快速扩展IDisposable的方法》
中有实现 - @诺贝尔
因为你手里的wpf很少有metro这样全屏动画的吧。wpf在全屏大规模刷新的时候 性能略悲剧 - 另外 我在写聊天室的时候 对于广播频道
我是采用用户请求拉模式来进行的。在服务器上建立一个循环链表存放广播信息,用户在心跳时间内来主动收取。广播信息超时了会被新的覆盖掉,这种方式不会产生多余的实例,自然也不会产生垃圾。 大家只有一条tcp链接主动发有必要么? udp的话我倒觉得可以有 - 1.某一个队列内的消息广播依然会涉及到SocketAsyncEventArgs对象的频繁创建和销毁,这是关键点
每个连接分配两个就可以了 一个发送一个接收,没有必要创建销毁和做池吧
2.即使按照场景的粒度进行了场景划分,对单个队列的成员变动依然涉及到锁,问题还是没有解决
如果你用的是单链表作为用户表载体 基本也不需要加锁阿.
就算用LinkList 用yield return + node.Next写一个枚举器也成。默认集合的枚举器显然是为了一致性才加上版本检查异常的,但是聊天室名单根本没有这种一致性需求吧。
不好意思年末才看到你的文章 回复不合时宜 - 我觉得lz 的问题不在Decorator模式的使用方式上 而是在于面向对象(或者说物件导向)最基本的“对象是什么,如何定义对象”上
- 攻击性什么都那么强呢...唉
- @imfunny
这样看不出来是mvvm拉 vm 没有真正的承担起view的逻辑控制呢 - @imfunny
mvvm要加在web上应用 vm就一定要在客户端作 事件变化和异常处理都要做成 js和 sl的 不然通信太频繁拉。。。 - 我觉得 route table包一下 是不是也可以达成
/User/Content/View/{id} 这样的简洁效果阿。
毕竟mvc 1 2 的时候还没有 dynamic - 笔误:并且只支持继承模式(Integrated Pipeline mode)。
- 大家可以参考我们翻译的Build大会视频
http://talk.boolan.com/
Using Windows Runtime from C# & VB 这个讲座
从某种角度来说 winrt和 sl都是走的“不过度依赖CLR编写 而采用metadata包装非托管代码运行时”的思路
但sl 没有解决“js+html/c++” 如何编写程序的问题
winrt 不但解决了这一问题
更做到了对任一winrt语言本身的"自然熟悉"。
这是微软的周期性佳作 - 这种没有对错可言的帖子也能吵起来还真是有意思
对互相尊重持否定意见的 根本就不需要尊重他讨论嘛 - •它具有 LazyThreadSafetyMode, 但是我们一般不使用它, 除非是很关键的情况下
这个说法是不对的
需要延迟加载的实例化 必然会耗费时间
耗费的时间越长 在这个时间内可能被多次请求的概率就增加
导致多次实例化的可能性就更大 - 弱弱问 这不是dom本身的问题嘛
- @smark
好啊 弄个代码大家一起试验 赫赫 - 用arraysegment那套参数
如果设置buffer为1mb
一次分配一兆
缓冲区不够写了再开个新的 直接把旧的扔给处理程序不管
一次回收一兆
不怕小碎片 - 补充一条 如果大家能够好好活用arraysegment那套参数 也能节省不少内存碎片。
- 2 完全可以不用池
实际上SocketAsyncEventArgs是个很轻量的对象
一个连接中 只要创建一个发送SocketAsyncEventArgs和一个接收SocketAsyncEventArg 私有独占就完全足够了。作池让不存在竞争的多个连接作了一层并发竞争,没事找事。
3 这个要和4一起考虑,也许是成立的。但是对于大多数情况 直接用内建线程池是最优化的。
这个是我亲口从http://www.wintellect.com/CS/blogs/jeffreyr/default.aspx JR 大牛口中亲口得到的保证。 - 你在ioc里面注册 Func<TChannel,object>不行么?
- 比较幽默的是 lz一边说反射已经out 一边用反射调用自己动态编译产生的程序集。。。
好歹用个接口回避一下吧。。。 - 包装进QueueUserItem阿。。。 等等 你在用2005 ... 悲剧。。。...
- @Fish Li
@AndersTan
As of .NET 4, the Task type provides a much more efficient way to execute code asynchronously; prior to .NET 4
Task还是粉不错地 放心用了
感谢fish 提供话题
自动邮件反复轰炸也一定很痛苦吧。
快下班了~
讨论很愉快~抬杠真好^_^ - @AndersTan
哦~这个回复很宝贵 颠覆了我一些想法了。
要把begininvoke 当成“有一定消耗的简易方法”重新考虑
通过抬杠长了学问 没白抬 哈哈 - 做的异步例子 和得到的回复呢?...
- <TArgs>作为EAP有什么看法呢。
如果仅仅是因为创建EventArgs产生了消耗 那么这个成本是完全可以规避的。多层函数调用的消耗咱们就放过了吧。。。。... - @Fish Li
话说 咱们都基于事实讨论问题 不要带倾向性嘛.
抬杠长学问 一定要建立在互相找语病和失误的基础上,但是针对事情 不针对个人.不要带情绪咯.
话说自己写异步事件模式要是没有eventargs 而是直接用一个public event Action<Byte[]> 那么eventargs的消耗就可以忽略不计了吧。
<=你看这种抬杠多好玩阿。。。 - @Fish Li
也不是一定要用4.0才可以用task的
如果用Rx的话 3.5版本中具有整套的4.0才有的异步线程库
如果项目允许的话 还是推荐用用的,早爽早知道 :P - 从实战意义上说 Task<T>作为统一异步模型很爽阿
本身就是IAsyncResult的实现
支持从APM和Delegate直接转化
有统一的取消机制 有统一的异常处理机制
不它用可惜了










