C Pthread Problemi

Başlatan NulledByte, 13 Kasım 2016 - 17:46:45

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

NulledByte

Selamlar. C/Linux'da bir uygulama geliştirmekteyim. Bu uygulamada socketleri kullanıyorum serverdan clienta bir komut geldiğinde pthread ile bir thread oluşturup bu fonksiyonu çalıştırmaktayım. Buraya kadar hiç bir problem yok fakat thread çalıştıgı zaman soket portu dinlemeyi bırakıyor ve karşıdan gelen hiç bir komuta cevap vermiyor bu problemi nasıl çözebilirim ?

Kısaca anlattıgım işlerin yapıldığı kod bloğu şu şekil.


  while (0x1)
  {
    if(recv(_iSocketFD, _cRecvCommand, sizeof(_cRecvCommand), 0x0) < 0)
    {
      printf("Komuta Merkezinden Gelen Birşeyler Mevcut Fakat Parazit Nedeniyle Okunamıyor!\n");
    }
    else
    {
      if(!strcmp(_cRecvCommand, "KALKIS"))
      {
        if(_bIsDepature == true)
        {
          sprintf(_cSendData, "Araç Zaten Kalkış Yaptı!");
          write(_iSocketFD, _cSendData, sizeof(_cSendData));
        }
        else
        {
          _vDepature();
          pthread_create(&_pThread, NULL, &_vFuelCalc, NULL);
        }
      }
    }

Amenofis

Önce problemi sadeleştirsen daha iyi olur. Mesela yeni oluşturulan thread in çalıştığına emin miyiz? Emin olmak için giriş fonksiyonun başında thread ID yazdırabilirsin.

İkincisi, thread oluştururken her zaman aynı pthread_t nesnesini vermiyorsun değil mi? Hani şu "_pThread" olan. Her thread için ayrı pthread_t nesnesi gerekir.

Birde her komut geldiğinde niçin yeni thread? Tek thread ile olmuyor mu acaba?

maydin95

mutexlerle ilgili olabilir diye düşünüyorum. İşletim sistemi birden fazla thread aynı porta çullanmasın diye kilitlemiş olabilir. Sadece tahmin.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.