قائمة الانتظار في ذاكرة التخزين

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

تُعد قائمة الانتظار بنية بيانات خطية تحتوي على مجموعة من العناصر التي تتبع إما مبدأ الأول في الدخول والأول في الخروج (FIFO) أو تعطي أولوية للعناصر بناءً على معايير محددة مسبقًا. تدعم ذاكرات التخزين نوعين من قوائم الانتظار، وهما قوائم الانتظار العادية و قوائم الانتظار ذات الأولوية. تشترك كلا النوعين في نفس مجموعة الدوال لتهيئة قائمة انتظار فارغة، وإضافة بيانات إلى قائمة الانتظار، وقراءة البيانات من قائمة الانتظار، وإزالة البيانات من قائمة الانتظار.

تكون قوائم الانتظار في ذاكرة التخزين مفيدة لمعالجة البيانات بناءً على الترتيب وتخزين معلومات المستخدم، مثل مستويات المهارة، لتسهيل المطابقة بناءً على المعايير المطلوبة. على سبيل المثال، يمكنك إضافة مكان اللوبي كمكان البداية للعبتك، واستخدام قوائم الانتظار في ذاكرة التخزين كنظام تخزين مركز لمعلومات المستخدم يمكن الوصول إليه من خلال خوادم متعددة، وإدارة ترتيب وضع المستخدمين باستخدام القوائم، ونقل المستخدمين الذين أكملوا المطابقة إلى المكان الرئيسي للعبتك.

الحصول على قائمة الانتظار

للحصول على قائمة انتظار، اتصل بـ MemoryStoreService:GetQueue() مع اسم، الذي يكون عالميًا داخل اللعبة لكي تتمكن أي نصوص برمجية من الوصول إليه، و مهلة عدم ظهور اختيارية بالثواني، تمنع معالجة العناصر المكررة في نفس قائمة الانتظار. تكون مهلة عدم الظهور 30 ثانية بشكل افتراضي إذا تركت فارغة كما في عينة الشيفرة التالية.

الحصول على قائمة انتظار فارغة

local MemoryStoreService = game:GetService("MemoryStoreService")
local queue = MemoryStoreService:GetQueue("Queue1")

عندما تكون قائمة الانتظار تعالج عنصرًا فيها، تنطبق مهلة عدم الظهور على العنصر، مما يجعله غير مرئي للمعالجة من قبل خوادم أخرى، حيث يمكن أن تقوم عدة خوادم بتحديث قائمة الانتظار بشكل متزامن. على الرغم من أنه يُتوقع أن يتم إكمال كل من عمليات القراءة والإزالة لعنصر خلال مدة مهلة عدم الظهور، إذا حدث خطأ يتسبب في بقاء العنصر في قائمة الانتظار بعد انتهاء المهلة، يصبح العناصر مرئية للمعالجة مرة أخرى. من خلال ذلك، تضمن مهلة عدم الظهور أن جميع العناصر في قائمة الانتظار لا تزال قيد المعالجة حتى لو حدثت مشاكل غير متوقعة.

بعد الحصول على قائمة الانتظار، استخدم أي من الوظائف التالية:

الوظيفةالإجراء
MemoryStoreQueue:AddAsync()إضافة عنصر جديد إلى قائمة الانتظار.
MemoryStoreQueue:ReadAsync()قراءة عنصر واحد أو أكثر من قائمة الانتظار كعملية واحدة.
MemoryStoreQueue:RemoveAsync()إزالة عنصر واحد أو أكثر تمت قراءته سابقًا من قائمة الانتظار.
MemoryStoreQueue:GetSizeAsync()الحصول على عدد العناصر في قائمة الانتظار.

إضافة البيانات

لإضافة عنصر جديد إلى قائمة الانتظار، اتصل بـ MemoryStoreQueue:AddAsync() مع قيمة العنصر، ووقت انتهاء الصلاحية بالثواني، وأولوية اختيارية للعنصر. إذا كنت ترغب في الحفاظ على قائمة الانتظار في تسلسل FIFO، يمكنك ترك الأولوية فارغة أو تمرير 0.

إضافة بيانات إلى قائمة انتظار

local MemoryStoreService = game:GetService("MemoryStoreService")
local queue = MemoryStoreService:GetQueue("Queue1")
local addSuccess, addError = pcall(function()
queue:AddAsync("User_1234", 30, 1)
end)
if not addSuccess then
warn(addError)
end

قراءة وإزالة البيانات

لقراءة عنصر واحد أو أكثر من قائمة الانتظار دفعة واحدة، اتصل بـ MemoryStoreQueue:ReadAsync()، الذي يُرجع id يمثل العنصر المقروء. عندما تنتهي من معالجة العناصر، اتصل فورًا بـ MemoryStoreQueue:RemoveAsync() لحذفها من قائمة الانتظار باستخدام id الخاص بها. يضمن ذلك أنك لن تقوم بمعالجة عنصر أكثر من مرة. لالتقاط والاستجابة لجميع العناصر التي تتم إضافتها باستمرار إلى قائمة الانتظار، قم بتضمين حلقة مثل عينة الشيفرة التالية:

قراءة وإزالة البيانات من قائمة الانتظار باستخدام حلقة

local MemoryStoreService = game:GetService("MemoryStoreService")
local queue = MemoryStoreService:GetQueue("Queue1")
local addSuccess, addError = pcall(function()
queue:AddAsync("User_1234", 30, 1)
end)
if not addSuccess then
warn(addError)
end
-- حلقة معالجة قائمة الانتظار
while true do
local readSuccess, items, id = pcall(function()
return queue:ReadAsync(1, false, 30)
end)
if not readSuccess then
task.wait(1)
elseif #items > 0 then
print(items, id)
local removeSuccess, removeError = pcall(function()
queue:RemoveAsync(id)
end)
if not removeSuccess then
warn(removeError)
end
end
end

الحصول على الحجم

للحصول على عدد العناصر في قائمة الانتظار، اتصل بـ MemoryStoreQueue:GetSizeAsync(). تأخذ هذه الطريقة قيمة منطقية اختيارية excludeInvisible. عندما تكون true، يتم استبعاد العناصر غير المرئية من العدد المعاد. تكون هذه القيمة المنطقية افتراضيًا false.

الحصول على حجم قائمة انتظار

local MemoryStoreService = game:GetService("MemoryStoreService")
local queue = MemoryStoreService:GetQueue("Queue1")
local addSuccess, addError = pcall(function()
return queue:AddAsync("User_1234", 30, 1)
end)
if not addSuccess then
warn(addError)
end
local size
local success, sizError = pcall(function()
size = queue:GetSizeAsync(true)
end)
if success then
print(size)
else
warn(sizeError)
end
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.