现在的位置: 首页 > 综合 > 正文

多线程和异步的一些看法

2013年03月30日 ⁄ 综合 ⁄ 共 1195字 ⁄ 字号 评论关闭

多线程和异步的一些看法

zengjun.cnblogs.com

本文章是小弟的处女文章.以前只在园子里看文章.
正方开始

在工作中有一个项目由于写文件操作比较频繁
以前用的是同步写文件方式,有人提出要多线程写文件.
多线程写文件的任务分给别一个同事,
因别一个同事对多线程方面不太熟 我给他提供了下面这种试

//多线程操作同步写文件方法
    public ThreadOperate()
    
{
        Thread t 
= new Thread(new ThreadStart(ThreadProc));
        t.Start();
    }

    
    
//同步写文件方法
    public static void ThreadProc() 
    
{
    
    }

后来看了一些资料 http://dev.yesky.com/135/3030135.shtml (多核时代对并发程序设计的探索)
总结了下面这句:
线程: 需要操作系统投入CPU资源来运行和调度
异步: 无须消耗CPU时间的操作 如 I/O操作不仅包括了直接的文件、网络的读写,还包括数据库操作、Web Service、HttpRequest以及.net Remoting等跨进程的调用。
目前还不能很确定 上面这句是否正确. 请指点.

根据上面那句话我的想法改变了,我认为用异步写文件比多线程更合适于是用了下面方式

//异步写文件
    public void WriteFile()
    
{
    FileStream fs 
= new FileStream(@"C:\Test.txt", FileMode.Create,FileAccess.Write, FileShare.Write);
        
byte[] buffer = new byte[100];
        
for (int i = 0; i < buffer.Length; i++)
        
{
               buffer[i] 
= 2;
        }

        fs.BeginWrite(buffer, 
0, buffer.Length, FileCallBack, fs);
     }

 
    
static void FileCallBack(IAsyncResult asyncResult)
       
{
           FileStream fs 
= asyncResult.AsyncState as FileStream;
           
if (fs != null)
           
{
               fs.EndWrite(asyncResult);
               fs.Close();
               
           }

        }

抱歉!评论已关闭.