Олон урсгалыг үүсгэн удирдах

Олон урсгал ямар хэрэгтэй вэ? хичээлд програмчлалын C# хэл дээрх програмд Multithreading буюу олон урсгалыг үүсгэн удирдах шаардлага хэрхэн үүсдэг тохиолдолыг дэлгэрэнгүй үзсэн. Олон урсгалыг үүсгэн удирдах ажиллагааг программд яаж хэрэгжүүлэхийг судлахын өмнө урсгал буюу thread -ийг үүсгэх ажиллагааг дараах схемээс харцгаая. Урсгал буюу thread -ийг үүсгэхдээ Thread классыг ашигладаг. Классын байгуулагч арга шинээр үүсэх урсгал эхлэхэд ажиллах аргыг заах делегат төрлийн нэг параметрийг авдаг.

Материалыг тусгай эрхтэй хэрэглэгч үзнэ.

request_quoteТусгай эрх авах

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 439 Бүртгүүлэх

Хэрвээ системийн өөрийн дотоод онцгой нөхцлийн төрлүүд тохиромжгүй бол бид өөрсдөө төрлүүд үүсгэж болно. Бүх онцгой нөхцлийн суурь класс Exception учраас өөрийн төрлийг үүсгэхдээ бид энэ классаас удамшуулна.  
Жишээ нь манай програмд насны хязгаарлалт байлаа гэе.

try
{
    Person person = new Person { Name = "Tom", Age = 17 };
}
catch (Exception ex)
{
    Console.WriteLine($"Алдаа: {ex.Message}");
}
 
class Person
{
    private int age;
    public string Name { get; set; } = "";
    public int Age
    {
        get => age;
        set
        {
            if (value < 18)
                throw new Exception("18 нас хүрээгүй бол бүртгэл хаалттай");
            else
                age = value;
        }
    }
}

Person классийн age шинжид утга олгохдоо шалгалт хийн нас 18 -аас бага бол онцгой нөхцлийг үүсгэнэ.

  Нээгдсэн тоо: 517 Төлбөртэй

Програмчлалын C# хэл хатуу төрөлжилттэй тул өгөгдөлтэй ажиллах үед null утга асуудал үүсгэх тохиолдол их. Үүнийг тооцолгүй бичигдсэн код бүр ажлын /production/ хувилбараар ажиллаж байхдаа алдаа өгөх тал бий. Кодийн тестийг хийхдээ тухайн хувьсагчид null утга олгогдох тохиолдолыг тооцохгүй байх нь ийм асуудал гарах үндсэн шалтгаан хэдий ч кодлогч энэ талаар өөрөө бодон кодлох хэрэгтэй.   

null -ийн шалгалт. Null guard /хамгаалагч/

Коддоо null утга авдаг өөрөөр хэлбэл nullable төрлийн хувьсагч болон параметрүүд ашиглах болбол NullReferenceException алдаа гарахаас сэргийлэн null -ийг шалгах хэрэгтэй. Жишээ нь

void PrintUpper(string? text)
{
    if (text!=null)
    {
        Console.WriteLine(text.ToUpper());
    }    
}

Дээрх кодод text параметр null -тэй тэнцүү биш бол мөрийн тэмдэгтүүдийг том үсэг болгох ToUpper() аргыг дуудна.

  Нээгдсэн тоо: 446 Төлбөртэй

Програмчлалын хэлийг судлаад код бичих нэг их хүнд биш. Харин сайн код бичнэ гэдэг нь хүндхэн асуудал. Хэлийг эхлэн суралцагсад код бичих дээр түлхүү анхаарсанаас болоод цэгцтэй, зохион байгуулалт сайтай, өргөжүүлэх болон дэмжлэг үзүүлэхэд хөнгөн буюу өөрөөр хэлбэл сайн код бичих тал дээр нэг их анхаардаггүй. Энэ нь программийн бүтээгдхүүний загварчлалтай илүү холбоотой зүйл юм. Манайхан програмийн загварчлал хийхгүйгээр асуудлыг кодлогчид шууд өгөөд хурдан хийлгэх гэдэг. Энэ нь эцэстээ зөвхөн ажилладаг л кодийг бичүүлэхэд хүргэдэг. Ийм кодийг цаашид хөгжүүлэх болон дэмжихэд нэн хүндрэлтэй буюу бараг боломжгүй болгодог. Иймээс програмчлалын хэлний боломжуудыг маш өргөн судлан мэдэхийг зөвлөе. Програмыг загварын дагуу кодлоход таниас тухайн хэлний боломжуудыг зөв оновчтой ашиглахыг шууд шаардах болно.

  Нээгдсэн тоо: 1327 Төлбөртэй

Нэмэлт урсгалтай ажиллах аргачлалын талаарх ээлжит хичээлийг толилуулъя. Та програм хангамжийн чиглэлээр ажилладаг эсхүл суралцдаг бол сайтын C# хэлний хичээлүүдийг бүгдийг үзэхийг зөвлөе. Учир нь C# хэлэнд оруулан өгсөн технологиудийн утгыг сайн ойлгохгүйгээр програм бичнэ гэвэл нилээд хүндхэн асуудал үүснэ шүү. Програмчлалын хэлүүдийн бичлэгийн ерөнхий дүрэм бараг ижилхэн болсон хэдий ч онолын үндсэн аргачлал, технологийг хэл бүр өөрийн онцлогоор хэрэгжүүлсэн байдаг. Иймээс технологийг ойлгохын тулд тухайн хэлийг гүнзгий судалсан байх хэрэгтэй. Технологийг сайн судлаагүй хүмүүс хэлэнд өөрт нь байдаг боломжуудыг өөрсдөө хэрэгжүүлэх гэж цаг хугацаа, хүч хөдөлмөрөө ихээр үрдэг ч үр дүн нь мэдээжээр сайнгүй гардаг гэдгийг санаарай. Хичээлээр нэмэлт урсгалын нэмэлт урсгалд гарсан алдааг хэрхэн зөв боловсруулахыг авч үзье.

Үйл явдал /event/ тодорхой үйлдэл хийгдсэн талаар системд мэдэгддэг. Хэрвээ бид энэхүү үйлдлийг ажиглах хэрэгтэй бол яг энд…

Нээгдсэн тоо : 258

 

Манай төсөл олон хуудсуудтай болон тэдгээрийн хооронд динамикаар шилжилт хийж байгаа ч тухайн үед шилжилт хийгдсэн хуудаст тохирох…

Нээгдсэн тоо : 341

 

Зочин (Visitor) паттерн классуудыг өөрчлөхгүйгээр тэдгээрийн обьектуудын үйлдлийг тодорхойлох боломжийг олгоно. Зочин хэвийг ашиглахдаа классуудын хоёр ангилалыг тодорхойлно.…

Нээгдсэн тоо : 308

 

Лямбда-илэрхийлэл нь нэргүй аргын хураангуй бичилтийг илэрхийлнэ. Лямбда-илэрхийлэл утга буцаадаг, буцаасан утгыг өөр аргын…

Нээгдсэн тоо : 406

 

Кодийн сайжруулалт /рефакторинг/ хичээлээр програмийн кодоо react -ийн зарчимд нийцүүлэн компонентод салгасан.…

Нээгдсэн тоо : 451

 

Хадгалагч (Memento) хэв обьектын дотоод төлвийг түүний гадна гаргаж дараа нь хайрцаглалтын зарчмыг зөрчихгүйгээр обьектыг сэргээх боломжийг олгодог.

Нээгдсэн тоо : 480

 

Делегаттай нэргүй арга нягт холбоотой. Нэргүй аргуудыг делегатийн хувийг үүсгэхэд ашигладаг.
Нэргүй аргуудын тодорхойлолт delegate түлхүүр үгээр…

Нээгдсэн тоо : 563

 

Математикт харилцан урвуу тоонууд гэж бий. Ямар нэгэн тооны урвуу тоог олохдоо тухайн тоог сөрөг нэг зэрэг дэвшүүлээд…

Нээгдсэн тоо : 638

 

Төсөлд react-router-dom санг оруулан чиглүүлэгчдийг бүртгүүлэн тохируулсан Санг суулган тохируулах хичээлээр бид хуудас…

Нээгдсэн тоо : 675

 
Энэ долоо хоногт

тэгшитгэл бод.

Нээгдсэн тоо : 1418

 

тэгшитгэл бод.

Нээгдсэн тоо : 1021

 

Зурагт өгөгдсөн дотоод байдлаараа шүргэлцсэн хоёр тойргийн TA нь ерөнхий шүргэгч, TC нь том тойргийн огтлогч, жижиг тойргийн шүргэгч болно. DC=3, CB=2 бол TA -г ол.

Нээгдсэн тоо : 1067