<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[blockierende funktion schreiben]]></title><description><![CDATA[<p>Hi,</p>
<p>ich arbeite zur zeit an einem chat programm.<br />
Ich arbeite mit einer selbst geschriebenen buffer klasse, die auch funzt, aber um die einkommenden daten zu verarbeiten benutze ich einen thread, der die ganze zeit aus dem buffer ließt und wenn was drinsteht es verarbeitet, was zu leistungs problemen kommt(die eingabe laggt sogar). Meine Idee, ich mache aus der read() funktion meiner buffer klasse eine blockierende funktion, also sowas wie die recv() bei den tcp sockets, also dass die funktion den thread solange schlafen lässt bis etwas im buffer steht und nicht die ganze zeit in ner while schleife fragt.</p>
<p>Frage: Wie kann ich die funktion schlafen lassen bis etwas im buffer steht?</p>
<p>Mfg Yazoo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212855/blockierende-funktion-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 15:58:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212855.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 May 2008 13:01:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to blockierende funktion schreiben on Sun, 11 May 2008 13:03:55 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich arbeite zur zeit an einem chat programm.<br />
Ich arbeite mit einer selbst geschriebenen buffer klasse, die auch funzt, aber um die einkommenden daten zu verarbeiten benutze ich einen thread, der die ganze zeit aus dem buffer ließt und wenn was drinsteht es verarbeitet, was zu leistungs problemen kommt(die eingabe laggt sogar). Meine Idee, ich mache aus der read() funktion meiner buffer klasse eine blockierende funktion, also sowas wie die recv() bei den tcp sockets, also dass die funktion den thread solange schlafen lässt bis etwas im buffer steht und nicht die ganze zeit in ner while schleife fragt.</p>
<p>Frage: Wie kann ich die funktion schlafen lassen bis etwas im buffer steht?</p>
<p>Mfg Yazoo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507003</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Sun, 11 May 2008 13:03:55 GMT</pubDate></item><item><title><![CDATA[Reply to blockierende funktion schreiben on Sun, 11 May 2008 13:16:04 GMT]]></title><description><![CDATA[<p>Schau dir mal Sleep () an.<br />
<a href="http://msdn.microsoft.com/en-us/library/ms686298(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms686298(VS.85).aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507011</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 11 May 2008 13:16:04 GMT</pubDate></item><item><title><![CDATA[Reply to blockierende funktion schreiben on Sun, 11 May 2008 13:21:46 GMT]]></title><description><![CDATA[<p>zugegeben, ich hab nicht so viel ahnung von sockets und tjreads, aber schau mal nach select() - ich meine das ist was in der Art wie du es suchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507016</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 11 May 2008 13:21:46 GMT</pubDate></item><item><title><![CDATA[Reply to blockierende funktion schreiben on Sun, 11 May 2008 13:23:43 GMT]]></title><description><![CDATA[<p>Yazoo schrieb:</p>
<blockquote>
<p>Frage: Wie kann ich die funktion schlafen lassen bis etwas im buffer steht?</p>
</blockquote>
<p>Würde es nicht gehen, wenn du die Funktion erst aufrufst, wenn etwas im Buffer steht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507017</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 11 May 2008 13:23:43 GMT</pubDate></item><item><title><![CDATA[Reply to blockierende funktion schreiben on Sun, 11 May 2008 13:28:02 GMT]]></title><description><![CDATA[<p>Sleep() und select() kenne und benutze ich, aber Sleep() hilft mir nicht, da ich ja nicht weiß oder errechnen kann, wann etwas im buffer steht. select() benutze ich auch, ich mache das so, das ich mit select auf ne nachricht warte, dann die Nachricht in den buffer schreibe (der global is) und in nem anderen thread die Nachricht aus dem buffer hole und dann verarbeite, also gucke ob da bestimmte Befehle drin sind. ich hole die Nachricht aus dem buffer mit der funktion read()<br />
das mache ich in ner while schleife und das verbraucht jede menge cpu, deshalb wollte ich die funktion blockierend machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507018</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Sun, 11 May 2008 13:28:02 GMT</pubDate></item><item><title><![CDATA[Reply to blockierende funktion schreiben on Sun, 11 May 2008 13:28:48 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Yazoo schrieb:</p>
<blockquote>
<p>Frage: Wie kann ich die funktion schlafen lassen bis etwas im buffer steht?</p>
</blockquote>
<p>Würde es nicht gehen, wenn du die Funktion erst aufrufst, wenn etwas im Buffer steht?</p>
</blockquote>
<p>aber wie soll ich rauskriegen ob was im buffer is oder nicht, ohne eine funktion auf zu rufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507019</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Sun, 11 May 2008 13:28:48 GMT</pubDate></item><item><title><![CDATA[Reply to blockierende funktion schreiben on Sun, 11 May 2008 13:29:59 GMT]]></title><description><![CDATA[<p>hier mal meine buffer klasse:</p>
<p>buffer.h:</p>
<pre><code class="language-cpp">#ifndef BUFFER
#define BUFFER

#define BUFFER_FULL -1
#define BUFFER_EMPTY °

#include &lt;string&gt;

using namespace std;

class buffer
{
  public:
  buffer();
  ~buffer();

  void write(string);
  string read();
  int GetLength() const;

  private:
  int getlatestfree() const;
  void delall();
  void del();

  string Buf[100];
  int Length;
};

#endif
</code></pre>
<p>buffer.cpp:</p>
<pre><code class="language-cpp">#include &quot;buffer.h&quot;

#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

buffer::buffer()
{
  delall();
}

buffer::~buffer()
{}

void buffer::write(string text)
{
  int i = getlatestfree();
  if(i != BUFFER_FULL)
  {
    Buf[i] = &quot;&quot;;
    Buf[i] = text;
    Length += 1;
  }
  else
  {
    std::cout &lt;&lt; &quot;BUFFER-FEHLER: Der Buffer ist foll! Versuchen sie es spaeter erneut!\n&quot;;
  }
}

string buffer::read()
{
  string buf;
  if(Buf[99] != &quot;&quot;)
  {
    buf = &quot;&quot;;
    buf = Buf[99];
    del();
    return buf;
  }
  else
  {
    return &quot;°&quot;;
  }
}

void buffer::del()
{
  for(int i = 99; i &gt; (99 - Length); i--)
  {
    if(i != 0)
    {
      Buf[i] = &quot;&quot;;
      Buf[i] = Buf[i-1];
    }
    else
    {
      Buf[0] = &quot;&quot;;
    }
  }
  Length -= 1;
}

int buffer::getlatestfree() const
{
  int i;
  for(i = 99; i &gt;= 0; i--)
  {
    if(Buf[i] == &quot;&quot;)
    {
      return i;
    }
  }
  return BUFFER_FULL;
}

void buffer::delall()
{
  for(int i = 0; i &lt; 100; i++)
  {
    Buf[i] = &quot;&quot;;
  }
  Length = 0;
}

int buffer::GetLength() const
{
  return Length;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1507020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507020</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Sun, 11 May 2008 13:29:59 GMT</pubDate></item><item><title><![CDATA[Reply to blockierende funktion schreiben on Sun, 11 May 2008 16:13:39 GMT]]></title><description><![CDATA[<p>Schau mal hier: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-169346-and-highlight-is-thread.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-169346-and-highlight-is-thread.html</a></p>
<p>Gruß Tobi.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507078</guid><dc:creator><![CDATA[T0bi]]></dc:creator><pubDate>Sun, 11 May 2008 16:13:39 GMT</pubDate></item></channel></rss>