c#ÖжàÏß³Ìͬ²½½â¾ö·½°¸
c#ÖжàÏß³Ìͬ²½½â¾ö·½°¸
C#ÖжÔÓÚ¶àÏ̱߳à³ÌÓкܺõÄÖ§³Ö£¬³£ÓõÄÓÐÒÔϼ¸ÖÖ½â¾ö·½°¸£º
1. Lock(object) ¶ÔÐèҪͬ²½µÄ´úÂë¿é¼ÓËø£»
¡¡¡¡¡¡¡¡2. Monitor Class
¡¡¡¡¡¡¡¡3. ReaderWriterLock Class¡¡¡¡¡¡
4. Mutex Class
5. Semaphore
6. Event
Õâ´ÎÎÒÖ÷Ҫ˵һÏ Lock ºÍ Monitor¡£¶ÔÓÚLock Ïë±ØÓÐÒ»¶¨¶àÏ̱߳à³Ì¾ÑéµÄ³ÌÐòÔ±¶¼»áºÜÊìϤ£¬¿´Ãû×Ö¾ÍÖªµÀ´ó¸ÅÊÇʲôÒâ˼ÁË¡£Lock ¾ÍÊÇÒ»°ÑËø£¬¾Ù¸öºÜ²»ÑŵÃÀý×Ó¡£±ÈÈç˵ÎÒÃÇÈ¥ÉÏWC£¬µ±Äã½øÈ¥ºó¾ÍÒª°ÑÃÅËø×¡£¬ºóÀ´µÄÈËÖ»ÄܵÈÄã·½±ãÍêÁ˲ÅÄܽøÈ¥¡£
private string lockFlag = "LOCK";
public void GoWC(Person p)
{
lock (lockFlag)
{
Console.WriteLine("Begin");
Console.WriteLine("End");
}
}
LockʹÓÃÆðÀ´·Ç³£·½±ã£¬ÓÐÒ»µãÐèҪעÒâ¾ÍÊÇÄãͬ²½µÄ¶ÔÏó×îºÃÊÇprivate»òprivate static£¬ÒòΪÈç¹ûÕâ¸öͬ²½¶ÔÏóÊÇpublic»òinternal,¾ÍÓпÉÄܱ»ÆäËû³ÌÐòÖÐÆäËû²¿·ÖµÄ´úÂë»ñµÃ£¬ÕâÑùµÄ»°ÄãµÄlock¾ÍʧȥµÄ×÷Óã¬Ò²¾ÍÊÇ˵Õâ¸öWCµÄÔ¿³×Ö»ÄÜÓÐÒ»°Ñ£¬Ö»ÓнøÁËWCµÄÈ˲ÅÄÜ»ñµÃ£¬ÆäËûµÈ´ýµÄÈËÊÇûÓа취»ñµÃµÄ¡£
¡¡¡¡ÁíÒ»¸ö³£ÓõĽâ¾ö·½°¸ÊÇʹÓÃMonitor class¡£ monitor class ºÍlockÆäʵ±¾ÉíûÓÐÊ²Ã´Çø±ð£¬ÕâÄÑÃâ»áÈÃÈ˾õµÃ·Ñ½â£¬Æäʵ²»È»¡£¶ÔÓÚʹÓÃlock¹Ø¼ü×ÖÀ´Ëµ¾³£»á·¢ÉúÒ»ÖÖÈÃÈ˷dz£ÓôÃÆµÄÊÂÇé“Deadlock”,µ±personAÓµÓÐr
Ïà¹ØÎĵµ£º
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ½«Ã¶¾Ù×÷Ϊ¼üÖµµÄÐÎʽ´æ´¢
{
enum Myenum
{
First=3,
Second ......
ÔÚC#3.0ÖÐÔö¼ÓÁËÒ»¸ö±äÁ¿ÉùÃ÷var£¬Õâ¸öÉùÃ÷ºÍJavaScriptµÄvarÀàËÆ£¬µ°Ò²²»Í¬¡£(*^__^*) ÎûÎû……
1.Ïàͬµã£¬Ëü¿ÉÒÔÓÃvarÀ´ÉùÃ÷ÈκÎÀàÐ͵ľֲ¿±äÁ¿¡£
2.²»Í¬µã Ëü½ö½ö¸æËß±àÒëÆ÷£¬¸Ã±äÁ¿ÐèÒª¸ù¾Ý³õʼ»¯±í´ïʽÀ´È·¶¨±äÁ¿µÄÀàÐÍ£¬¶øÇÒÖ»ÄÜÊǾֲ¿±äÁ¿¡£ ......
±¾ÕÂΪ½Ó¿Ú¿Î³ÌµÄ×ÛºÏÁ·Ï°¡£
±¾´ÎÁ·Ï°Õ¹Ê¾ÁËÒ»¸ö¼ò»¯µÄÒøÐÐÒµÎñÁ÷³Ì£¬ÌåÏÖÁËÒøÐкÍÓû§Êý¸ö½ÇÉ«µÄ¹ØÏµ¡£¿´ÏÂͼ£º
ÕË»§ÀࣨAccount£©¶ÔÏó´æ´¢ÔÚÊý¾Ý¿âÀࣨDatabase£©¶ÔÏóÖУ»¼ÆËã»ú£¨Computer£©Àà¶ÔÏóÁ¬½Óµ½Êý¾Ý¿âÀà¶ÔÏóÉÏ£»ÒøÐйñ̨£¨BankCounter£©Àà¶ÔÏóÓµÓÐһ̨¼ÆËã»ú¶ÔÏó×÷Ϊ˽ÓгÉÔ±£¬ÀûÓøöÔÏó¶ÔÊý¾Ý¿â½øÐвÙ×÷£»AT ......
µÚÒ»Õ ³ÌÐòÉè¼Æ
¡¡¡¡“ÒªÏë³ÉÎªÕæÕýµÄ³ÌÐòÔ±£¬ÎÒÃÇÐèÒª½øÐÐÒ»³¡Ï´Àñ¡£”
¡¡¡¡“³ÌÐò = Êý¾Ý½á¹¹ + Ëã·¨¡£”ÕâÑùµÄ¹«Ê½ºÜ¾«±Ù£¬ËüÔ½¹ýÁ˱í²ãÖ±½ÓÃèÊöÁ˳ÌÐòµÄ±¾ÖÊ¡£²»½öÈç´Ë£¬ÕâÑù¼¸¸ö¼òµ¥µÄµ¥´ÊÒ²ÈÃÎÒÃÇÃ÷°×“ÎÒÃÇÓ¦¸ÃѧϰʲôÄÚÈÝ£¿”¡£ÈËÃÇ×öÈκÎʶ¼ÓÐÒ»¶¨µÄ³ÌÐò£¬Ö»ÊÇûÓÐÒâʶµ½¡£Ó ......