Blokirovkali xabar almashishni real muammolarni yechishga qoʻllanilishi

|
Blokirovkali xabar almashishni real muammolarni yechishga qoʻllanilishi
|
bet | 8/18 | Sana | 07.02.2024 | Hajmi | 435,82 Kb. | | #152842 |
Bog'liq Mustaqil ishi Xakimov Allamurod (3)Blokirovkali xabar almashishni real muammolarni yechishga qoʻllanilishi
Bloklirovkali xabar almashish protseduralari ishni to shart bajarilgunga qadar to'xtatib turadi. Asinxrondan qaytish aloqa operatsiyasini ishga tushirgandan so'ng darhol sodir bo'ladi.
Bloklirovkali xabar almashish bilan ehtiyotkorlik bilan foydalanish lozim.
Asinxron operatsiyalardan foydalanish ma'lumotlar massivlaridan ehtiyotkorlik bilan foydalanishni talab qiladi.
Har bir jarayonning o'ziga xos identifikatori va ajratilgan manzil maydoni mavjud.
MPI-da umumiy o'zgaruvchilar yoki ma'lumotlar mavjud emas.
Jarayonlar jamoaviy axborot almashish operatsiyalarini amalga oshirish uchun guruhlarni tashkil qilishi mumkin.
Jarayon raqami manfiy bo'lmagan butun son bo'lib, har bir jarayonning o'ziga xos atributidir.
Xabarning atributlari jo'natuvchining jarayon raqami, qabul qiluvchining jarayon raqami va xabar identifikatoridir.
MPI_Status tuzilmasida quyidagi maydonlar mavjud:
MPI_Source(jo'natuvchining jarayon raqami),
MPI_Tag (xabar identifikatori),
MPI_Error(xato kodi); qo'shimcha maydonlar ham bo'lishi mumkin.
Xabar identifikatori (msgtag) - 0 dan 32767 gacha bo'lgan manfiy bo'lmagan butun son bo'lgan xabar atributi. Jarayonlar guruhlarga birlashtiriladi, guruh ichida barcha jarayonlar qayta nomlanadi.
"Blokirovka" so'zi umuman ta'qib etiladigan qanday operatsiyalarni anglatishi mumkin. Agar siz xabar almashishni bloklay olmoqchi bo'lsangiz, ko'p tilda xizmat qiladigan ilovalar yoki xabar almashish bo'yicha platformalardan foydalanishingiz mumkin.
Masalan, Android yoki iOS operatsion tizimli qurilmangizda, shaxsiy xabar almashishni bloklash uchun maxsus funktsiyalar mavjud. Bunday ilovalar o'rnatilgan bo'lsa, siz shaxsiy xabarlarni o'qiymangizga joylashtirishingiz mumkin. Xabar almashishning sozlamalarini ochib, "bloklash" yoki o'xshash nomli bo'limni topib, xabar almashishni bloklash mumkin.
Boshqa tizimlarda ham, shaxsiy xabar almashishni bloklashga o'zgartirish kiritilgan bo'lishi mumkin. Bunday funksiyalarga oid ma'lumotlar operatsion tizim va uning versiyasiga qarab farqli bo'lishi mumkin.
"Xabar almashishni bloklash" muammolarni yechish uchun bir necha usullar mavjud bo'lishi mumkin. Misol uchun, bloklangan xabar almashishni o'chirish, foydalanuvchilar ro'yxatini tekshirish yoki eng ko'p foydalaniladigan xabar almashish ilovalarini o'rnatish mumkin. Ammo, bu usullar har bir platforma, ilovaga va bloklovchining ma'lumotlariga qarab farq qila olishi mumkin.
Blokirovkali xabar almashish uchun oddiy C++ tilida dastur kodini ko’rib o’tamiz.
#include
#include
using namespace std;
int main(int argc, char **argv){
int rank;
int m,n,x,y;
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
m=0; n=0;
if (rank==0){
m=125;
MPI_Send(&m,1,MPI_INT,1,12,MPI_COMM_WORLD);
MPI_Recv(&n,1,MPI_INT,1,15,MPI_COMM_WORLD,&status);
}
if (rank==1){
n=456;
MPI_Recv(&m,1,MPI_INT,0,12,MPI_COMM_WORLD,&status);
MPI_Send(&n,1,MPI_INT,0,15,MPI_COMM_WORLD);
}
cout<<"proccecor_raqam : "< "<MPI_Finalize();
}
|
| |