public static void ReaderUpdateToWriterTest() { RwLockTest obj = new RwLockTest(); Thread t = new Thread(obj.ReaderUpdateToWriter); t.Start(); }
public static void WriterReenlockTest() { RwLockTest obj = new RwLockTest(); for (int i = 0; i < 3; i++) { Thread t = new Thread(obj.WriterReenlock); t.Name = i + "-"; t.Start(); t = new Thread(obj.Reader); t.Name = i + "-reader-"; t.Start(); } }
public static void WriterRequestForReaderTest() { RwLockTest obj = new RwLockTest(); for (int i = 0; i < 3; i++) { /*写降级为读*/ Thread t = new Thread(obj.WriterRequestForReader); t.Name = i + "-"; t.Start(); /*读和读重入*/ t = new Thread(obj.Reader); t.Name = i + "-pure_reader-"; t.Start(); } }
/* * 读者和写者的测试,包括了读锁的可重入测试。 * 测试方法: * Writer 和 Reader 两个函数每隔50ms交替调用一次, 在Reader里面测试读锁的重入 * 输出: * 先进行三个Writer操作,切三个Writer是按照顺序进行写。 * Reader操作和重入的Reader操作是并发执行的,可以看到Reader的序号是交替的。 * **/ public static void ReaderAndWriterTest() { RwLockTest obj = new RwLockTest(); Thread t; for (int i = 0; i < 6; i++) { bool readOrWrite = 0 == i % 2; t = readOrWrite ? new Thread(obj.Writer) : new Thread(obj.Reader); t.Name = readOrWrite ? i / 2 + "-Writer " : (i / 2) + "-Reader"; if (readOrWrite) { t.Start(i % 2); } else { t.Start(); } Thread.Sleep(50); } }