using System;
using System.Threading;
namespace Namespace1
{
class C1
{
private bool deadlocked = true; //这个方法用到了lock,我们希望lock的代码在同一时刻只能由一个线程访问
public void LockMe(object o)
{
while (deadlocked)
{
deadlocked = (bool)o;
Console.WriteLine("Foo: I am locked :(");
Thread.Sleep(500);
} } //所有线程都可以同时访问的方法
public void DoNotLockMe()
{
Console.WriteLine("I am not locked :)");
}
} class Program
{
static void Main(string[] args)
{
C1 c1 = new C1(); //在t1线程中调用LockMe,并将deadlock设为true(将出现死锁)
Thread t1 = new Thread(c1.LockMe);
t1.Start(true);
}
}
}请问高手:程序的执行结果是不断输出"Foo: I am locked :(",而在C++中不会不断输出这个结果的,因为操作系统没有给t1线程分配时间片,主函数就退出了。不过在C#中,怎么操作系统一直给t1线程分配时间?我不太明白。
#include <windows.h>
#include <iostream.h>DWORD WINAPI Fun1Proc(
LPVOID lpParameter
);
void main()
{
HANDLE hThread1;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
CloseHandle(hThread1); cout<<"Main threading running"<<endl;
//Sleep(10);
}DWORD WINAPI Fun1Proc(
LPVOID lpParameter
)
{
cout<<"thread1 is running"<<endl;
return 0;
}写不写Sleep(10)效果大不一样。