Merhaba, bu yazımda kendi karşılaştığım bir sıkıntıyı nasıl çözdüğümü anlatacağım. Paralel programlama ve işletim sistemleri derslerinde anlatılan bir konu olan Mutual Exclusion gerçek hayatta karşıma çıktı. Bu problemi çözmek için eğitim hayatımdaki teorik bilgilere geri dönmem gerekti.
Mutual Exclusion (Karşılıklı Dışlama), birden fazla aynı anda çalışan programın aynı kaynağı kullanmaya çalışması ve kaynağı hali hazırda kullanan bir program varsa, diğer programa izin verilmemesidir.
Bir RPA projesinde tam Mutual Exclusion ile çözülebilecek bir problemle karşılaştım. 2 farklı robot üzerinde çalışacak bir sürecin, gün içerisinde defalarca çalışması ve birbiriyle asla aynı anda çalışmaması gerekiyordu. Her ne kadar orchestrator üzerinde çalışma zamanları farklı zaman dilimlerinde olsa bile, robot üzerinde çalışan farklı bir sürecin çalışma süresinin uzun sürmesi çakışma ihtimalini artıracaktı.
RPA Projesinde Mutual Exclusion Yapısı Nasıl Kurdum?
Bunu çözmek için iki robot uygulamasının da erişebildiği bir ortak klasörü kullandım. Ortak alanda MUTEX.txt adıyla bir text dosyası oluşturdum. Bir robotun, diğer robotun çalışmakta olduğunu anlamak için bu text dosyasını okumasını ve içerisinde LOCKED yazıp yazmadığını kontrol etmesini sağladım. Süreç adımları ve akış diyagramı aşağıdaki şekildeydi.
- Robot ortak alandaki MUTEX.txt dosyasını okur.
- Ortak alandaki MUTEX.txt dosyasında LOCKED yazıyorsa işlemi bitir.
- Ortak alandaki MUTEX.txt dosyasında LOCKED yazmıyorsa, MUTEX.txt dosyasına LOCKED yaz.
- İşlemleri gerçekleştir.
- txt dosyasında yer alan yazıları temizle.
- İşlemi bitir.