C# 线程同步问题。

来源:百度知道 编辑:UC知道 时间:2024/05/17 01:24:50
一个程序中有两个用http分别发送不同文件的线程。
两个线程同时开始。文件发送会不会有先后的问题?
文件是一个一个的发送的还是同时发送的?

程序启动时代码如下:
Thread aThread = new Thread(new ThreadStart(发送A文件的方法));
aThread.IsBackground = true;
aThread.Start();

Thread bThread = new Thread(new ThreadStart(发送B文件的方法));
bThread.IsBackground = true;
bThread.Start();

这样算是同步还是异步?
方法中没有写lock
这样两个文件会有先后顺序发送么?
就是说如果CPU是单核的,在发送文件的时候如果其中一个没有发送完,另一个就要等前一个发送完才发送么?
谢谢

不是,两个线程会交替执行。线程会被划分为若干个时间片,CPU的最小单位是时间片。

线程同步,如果你的CPU是多核的没有先后顺序,单核a会先执行,以后的情况看CPU的时间分片情况。但是如果改成从HTTP写入同一个文件会由于固有的IO锁导致资源争用,第一次写入没关闭就进行第二次写入会抛出异常。