Witam,
mam problem z komunikacją klasy z wątkami, sytuacja wygląda tak:
mam klasę główną (singleton) core, która powinna sterować wszystkimi wątkami i zapewniać komunikacje między nimi (do wątków używam Thread). Pomyślałem, że w klasie głównej (core) utworze publiczną zmienną i metodę która będzie zapisywać dane do tejże zmiennej a używana będzie w wątku.

Wygląda to mniej więcej tak:
core.php
  1. <?php
  2. final class Core
  3. {
  4. private static $oInstance = false;
  5. private $worker_list = array();
  6. public $data; // Zmienna do której zapisuje dane
  7.  
  8. public static function getInstance() { /* Zwraca instancję obiektu Singleton */
  9. if( self::$oInstance == false )
  10. {
  11. self::$oInstance = new Core();
  12. }
  13. return self::$oInstance;
  14. }
  15.  
  16. public function set_data($data){ // Metoda do zapisu danych
  17. $this->data = $data;
  18. }
  19.  
  20. public function run(){
  21. $this->worker_list[0] = new worker;
  22. $this->worker_list[0]->start();
  23. }
  24.  
  25.  
  26. }


worker.php
  1. <?php
  2.  
  3. class worker extends Thread {
  4. private $core; // Instance main core
  5.  
  6. function __construct() {
  7. $this->core = Core::getInstance();
  8. }
  9.  
  10.  
  11. public function run(){
  12. $this->core->set_data('Jakies dane ktore mają być wykorzystane w klasie głownej');
  13. }
  14.  
  15. }

(Przykłady napisałem z palca, więc może się coś nie zgadzać ale może jakoś lepiej rozjaśnią sytuacje)

Wygląda to tak, jakby worker tworzył sobie nową instancje klasy głównej lecz w rzeczywistości tak nie jest, więc teraz pytanie do Was, jak to zrobić żeby miało ręce i nogi, bo coś chyba poprzekręcałem i nie mogę sobie z tym poradzić.