2012-08-22 30 views
5

Tôi muốn tạo một trò chơi Tic Tac Toe đơn giản, được chơi giữa những người dùng hệ thống SAP.ABAP: đồng bộ hóa đối tượng bộ nhớ chia sẻ

Tôi có một lớp CL_TTT_MANAGER với phương thức SIGNUP gán cho người chơi trò chơi. Lớp của tôi là một lớp được kích hoạt bộ nhớ chia sẻ, vì mục đích của nó là có khả năng được truy cập bởi tất cả người dùng của một hệ thống sap.

Quy trình đăng ký được thực hiện bằng một thuật toán rất đơn giản.

1: Cờ "WAITING_FOR_PLAYERS" tồn tại và được đặt thành ABAP_FALSE. ban đầu. 2: Khi người chơi đầu tiên gọi "SIGNUP", cờ được đặt thành "ABAP_TRUE". 3: Khi trình phát thứ hai gọi "SIGNUP", cờ được đặt thành "ABAP_FALSE" và phiên bản trò chơi được tạo.

Vấn đề với phương pháp SIGNUP của tôi là nó dựa vào trạng thái, cụ thể là nó phải nhớ tên của người chơi đầu tiên và điều này đạt được bằng cách sử dụng thuộc tính riêng.

Đối với bất kỳ ai trong số những người đã làm việc với các sự cố đồng thời, bạn sẽ phát hiện ra một cuộc đua dữ liệu, cụ thể là ngay sau khi người chơi thứ hai đăng ký, người thứ ba cũng đăng ký, tên của người chơi đầu tiên có thể được thay thế bằng tên của người thứ ba.

Làm cách nào để đồng bộ hóa những thứ này trong abap? Tôi có cơ chế gì cho việc này? Tôi đã không gặp phải bất cứ điều gì như thế này trong tài liệu (tôi đã được nghiên cứu chỉ trong 2 tháng). Tôi có phải thực hiện điều này bản thân mình, hoặc là có một cái gì đó để giúp tôi?

+0

cũng SAP là một công ty (như Oracle) và ABAP là ngôn ngữ độc quyền của họ (Giống như Java) .... nhưng chỉ được sử dụng để lập trình hệ thống của họ. –

Trả lời

3

Điều này không phải là vấn đề - trước khi người chơi thứ ba có thể ghi vào khu vực bộ nhớ dùng chung, anh ta phải có tay cầm thay đổi và anh ấy sẽ không thể nhận được miễn là người dùng thứ hai vẫn còn có một bộ khóa thay đổi. See the docs để biết thêm thông tin chi tiết về chủ đề đó.

Hãy lưu ý rằng lập trình bộ nhớ chia sẻ ổn định và đáng tin cậy là một trong những nhiệm vụ khó thực hiện nhất trong môi trường ABAP (có thể trong bất kỳ môi trường nào). Tôi biết từ các câu hỏi khác của bạn rằng bạn tương đối mới với ABAP - đó là tham vọng để bắt đầu với các đối tượng được chia sẻ quá sớm.

+0

Thx để biết thông tin và lời khuyên. Hiện tại, tôi đang chịu trách nhiệm về việc đào tạo của riêng mình, vì vậy tôi có thể không phải lúc nào cũng biết khi tôi bước vào một lĩnh vực mỏ ABAP trong cuộc phiêu lưu mã hóa của tôi :). –

+0

Đây là một, hãy tin tôi đi. Đó là một lĩnh vực mỏ chọn lọc thuộc loại sẽ cho phép các hệ thống phát triển và thử nghiệm chỉ dành cho trung tâm vượt qua và chỉ thổi bay môi trường sản xuất với nhiều máy chủ ứng dụng. – vwegert

+0

Vâng thx cho cảnh báo. Đã không nghe nói về sự nguy hiểm, vì vậy tôi sẽ giữ một mắt ra. Bạn sẽ có bất kỳ đề xuất nào về cách giao tiếp giữa 2 trường hợp của 2 người dùng riêng biệt có thể xảy ra theo các cách khác (ngoại trừ các acces cơ sở dữ liệu) không? –