<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem thread</title>
<link>https://forum.pasja-informatyki.pl/tag/thread</link>
<description>Powered by Question2Answer</description>
<item>
<title>Asynch i await / Task</title>
<link>https://forum.pasja-informatyki.pl/545404/asynch-i-await-task</link>
<description>

&lt;p&gt;1. Chciałem zapytać jak to jest z tym TASKiem... od kilku programistów słyszałem takie definicje :&lt;/p&gt;



&lt;p&gt;Task - kawałek kodu, który wykonuje się asynchronicznie (czyli bez użycia innych wątków)&lt;/p&gt;



&lt;p&gt;Jednak Task.Run() pobiera wątek z ThreadPoola... jedno wyklucza się nieco z drugim...Jak to jest z tymi wątkami?&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;2. asynch / await&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;color:black&quot;&gt;&lt;span style=&quot;background-color:#ffff00&quot;&gt;Jeśli przykładowo mamy kod, który ma 50 razy Console.WriteLine(&quot;Programming&quot;) i każde wykonuje się co sekundę ( ustawiony delay 1000ms) , do tego na samym początku mamy funkcję asynchroniczną która wykonuje się 10 sekund ( np. jakies obliczenia )&lt;/span&gt;&lt;/span&gt; to po 10 sekundach ( czyli po 10 WriteLine) program wróci do tej funkcji i będzie wypisywał od nowa?&lt;/p&gt;</description>
<category>C#</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/545404/asynch-i-await-task</guid>
<pubDate>Fri, 02 Jul 2021 00:54:14 +0000</pubDate>
</item>
<item>
<title>Wiele wątków o krótkim działaniu. działa wolniej.</title>
<link>https://forum.pasja-informatyki.pl/500274/wiele-watkow-o-krotkim-dzialaniu-dziala-wolniej</link>
<description>

&lt;p&gt;Witam wszystkich.&lt;/p&gt;



&lt;p&gt;Poszukuję rozwiązania dotyczącego wykorzystania rdzeni do obliczeń sieci neuronowej.&lt;/p&gt;



&lt;p&gt;Mam przykładowo 100 wejść i 10 neuronów&amp;nbsp;do każdego neuronu obliczam 100 wejść razy synapsy i sumuję.&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
b[i-1][j]+= b[i][k]*wagi[i-1][k][j];&amp;nbsp;&lt;/pre&gt;



&lt;p&gt;robię 10 wątków w którym każdy oblicza 100 wejść.&lt;/p&gt;



&lt;p&gt;Cała procedura z tworzeniem wątków zabiera za dużo czasu.
&lt;br&gt;
Czy mogę zrobić wątek, który będę go tylko włączał i wyłączał a nie kasował i robił od nowa?
&lt;br&gt;
Jakieś pomysły?&lt;/p&gt;



&lt;p&gt;Oczywiście przeglądałem internet ale ciężko uzyskać szczegółowe informacje.
&lt;br&gt;
z góry dziękuję za podpowiedzi.&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::vector&amp;lt;std::thread&amp;gt; watki;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::thread t;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(j=1; j&amp;lt;tw[i-1]; j++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t = thread(oblicz_blad_th,this,i,j,tw[i]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;watki.push_back(std::move(t));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (std::thread &amp;amp; th : watki)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (th.joinable())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;th.join();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
            }&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/500274/wiele-watkow-o-krotkim-dzialaniu-dziala-wolniej</guid>
<pubDate>Sun, 19 Jul 2020 19:16:54 +0000</pubDate>
</item>
<item>
<title>Thread.Start vs Task.Run vs Async Await.</title>
<link>https://forum.pasja-informatyki.pl/470180/thread-start-vs-task-run-vs-async-await</link>
<description>Witam, pytanie jak w temacie. Czego najlepiej używać do jakich sytuacji i dlaczego?</description>
<category>C#</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/470180/thread-start-vs-task-run-vs-async-await</guid>
<pubDate>Wed, 05 Feb 2020 13:24:23 +0000</pubDate>
</item>
<item>
<title>Jak zrobić aby funkcja Thread.sleep wykonywała sie w trakcie kodu ?</title>
<link>https://forum.pasja-informatyki.pl/427102/jak-zrobic-aby-funkcja-thread-sleep-wykonywala-sie-w-trakcie-kodu</link>
<description>

&lt;pre class=&quot;brush:java;&quot;&gt;
public void button_click(Button X)
	{
		X.setBackground(Color.GREEN);
		try
    	{
			Thread.sleep(1000);
    	}catch(InterruptedException e) {}
//dalszy kod&lt;/pre&gt;



&lt;p&gt;Po odpaleniu funkcji program najpierw czeka sekundę, a dopiero potem zmienia kolor. Jak zrobić aby funkcja sleep wykonywała się po zmianie koloru ?&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/427102/jak-zrobic-aby-funkcja-thread-sleep-wykonywala-sie-w-trakcie-kodu</guid>
<pubDate>Tue, 23 Apr 2019 15:42:22 +0000</pubDate>
</item>
<item>
<title>C# Freeze po kilku task runach.</title>
<link>https://forum.pasja-informatyki.pl/396313/c%23-freeze-po-kilku-task-runach</link>
<description>

&lt;p&gt;Witam. Mam problem z programem c#. Jest to tylko wycinek programu, ale testowałem dokładnie ten sam wycinek i dalej jest to samo. Jak ustawię RepeatNumber na 1 działa elegancko, jak ustawię na 10 jest freeze ok. 15 sekund, jak ustawie na 50&amp;nbsp;to już w ogóle brak odpowiedzi, a potrzebuję aż 125. Natomiast jak usunę Thread.Sleep(1000); bo testowałem bez tego to dostaję StackOverflow Exception. Dodam że nawet przy RepeatNumber na 10 czy 50 napis &quot;done&quot; dostaję od razu po uruchomieniu programu.&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:csharp;&quot;&gt;
void main()
{
    int RepeatNumber = 10;
    for (int i = 0; i &amp;lt; RepeatNumber; i++)
    {
        MyFunction();
    }
    Console.write(&quot;done&quot;);
}

void MyFunction()
{
  Task.Run(() =&amp;gt; MyLoop());
}

void MyLoop();
{
    Thread.Sleep(1000);
    MyLoop();
}&lt;/pre&gt;</description>
<category>C#</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/396313/c%23-freeze-po-kilku-task-runach</guid>
<pubDate>Mon, 26 Nov 2018 13:05:26 +0000</pubDate>
</item>
<item>
<title>C# Task/Thread baaaaaardzo wysokie zużycie procesora</title>
<link>https://forum.pasja-informatyki.pl/364391/c%23-task-thread-baaaaaardzo-wysokie-zuzycie-procesora</link>
<description>Cześć, mógłby mi ktoś wyjaśnić dlaczego dodanie 1 Task/Thread w moim programie który zawsze będzie działać w tle sprawia że mój program zużywa nagle ponad 30% procesora?&lt;br /&gt;
&lt;br /&gt;
W tym Task/Thread jest jedna pętla while (true) i nic więcej.&lt;br /&gt;
&lt;br /&gt;
Żeby nie było: cały czas używam Task do tego by np pobrać dane z bazy żeby nie zacinały aplikacji, lecz pierwszy raz robię coś co ma ciągle działać w tle. W tej pętli sprawdzam czy program się nie zaciął, jakby ktoś chciał wiedzieć. Ale nie wierzę że na laptopowym intel i5 7 generacji takie coś potrzebowało aż tyle zasobów procesora by móc działać prawidłowo. Zmiany w priority dla procesu itd itd itd itd nic nie dały, dosłownie nic.&lt;br /&gt;
&lt;br /&gt;
Dziękuję za wszelką pomoc :)</description>
<category>C#</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/364391/c%23-task-thread-baaaaaardzo-wysokie-zuzycie-procesora</guid>
<pubDate>Sun, 08 Jul 2018 20:11:41 +0000</pubDate>
</item>
<item>
<title>Problem z wypisywaniem na konsoli gdy są wątki</title>
<link>https://forum.pasja-informatyki.pl/346306/problem-z-wypisywaniem-na-konsoli-gdy-sa-watki</link>
<description>

&lt;p&gt;Witam. Mam program, który korzysta z 2 wątków i chce wypisywać jakieś informacje najpierw z wątek1 a potem z wątek2. Niestety na konsoli napisy są wymieszane i generalnie panuje chaos :D&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;thread&amp;gt;

void informacje(std::string nazwaWatku) {
  std::cout &amp;lt;&amp;lt; &quot;Tytul &quot; &amp;lt;&amp;lt; nazwaWatku &amp;lt;&amp;lt; &quot;.&quot; &amp;lt;&amp;lt; std::endl;
  std::cout &amp;lt;&amp;lt; &quot;Tekst &quot; &amp;lt;&amp;lt; nazwaWatku &amp;lt;&amp;lt; &quot;.&quot; &amp;lt;&amp;lt; std::endl;
  std::cout &amp;lt;&amp;lt; nazwaWatku &amp;lt;&amp;lt; &quot; zostal zakonczony.&quot; &amp;lt;&amp;lt; std::endl;
}

int main() {
  std::thread watek1(informacje, &quot;watek1&quot;);
  std::thread watek2(informacje, &quot;watek2&quot;);
  watek1.join();
  watek2.join();
  std::cout &amp;lt;&amp;lt; &quot;Funkcja main() zostala zakonczona.&quot; &amp;lt;&amp;lt; std::endl;
  return 0;
}
&lt;/pre&gt;



&lt;p&gt;1. Jak zrobić aby najpierw wypisać zawartość z wątek1 a dopiero po wypisaniu wszystkiego wypisać wątek2? Coś w tym stylu:&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
Tytul watek1
Tekst watek1
watek1 zostal zakonczony
Tytul watek2
Tekst watek2
watek2 zostal zakonczony
Funkcja main() zostala zakonczona&lt;/pre&gt;



&lt;p&gt;2. Jak zrobić coś podobnego do tego poniżej?&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
Tytul watek1
Tytul watek2
Tekst watek2
Tekst watek1
watek1 zostal zakonczony
watek2 zostal zakonczony
Funkcja main() zostala zakonczona&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/346306/problem-z-wypisywaniem-na-konsoli-gdy-sa-watki</guid>
<pubDate>Thu, 26 Apr 2018 11:27:51 +0000</pubDate>
</item>
<item>
<title>Php threads problem z wielowątkowością.</title>
<link>https://forum.pasja-informatyki.pl/278077/php-threads-problem-z-wielowatkowoscia</link>
<description>

&lt;p&gt;Witam&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Chciałem użyć wielowątkowości w PHP 5.6.3&lt;/p&gt;



&lt;p&gt;Zainstalowałem wszystko i napisałem skrypt.&lt;/p&gt;



&lt;p&gt;Wszystko pięknie ładnie ale niestety wywala mi błąd&lt;/p&gt;



&lt;p&gt;PHP Fatal error: Uncaught exception 'RuntimeException' with message 'pthreads has detected that the CheckIpThread could not be started, the system lacks the necessary resources or the system-imposed limit would be exceeded' in C:\xampp\htdocs\test\Benchmark.php:34
&lt;br&gt;
Stack trace:
&lt;br&gt;
#0 C:\xampp\htdocs\test\Benchmark.php(34): Thread-&amp;gt;start()
&lt;br&gt;
#1 C:\xampp\htdocs\test\Benchmark.php(22): th_(900)
&lt;br&gt;
#2 {main}
&lt;br&gt;
thrown in C:\xampp\htdocs\test\Benchmark.php on line 34&lt;/p&gt;



&lt;p&gt;jak rozwiązać problem &quot;usuwania&quot; wątków tak aby mozna wykonywać np po 100 zadań jednocześnie w nieskończoność i aby skrypt usuwał te juz wykonane.&lt;/p&gt;



&lt;p&gt;Może potrzeba czegoś innego niz czysty php thread?&lt;/p&gt;



&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php
$flaga=0;
//ini_set('memory_limit', '2M');
//set_time_limit(0);
//ini_set('display_errors', 0);
class CheckIpThread extends Thread {
    private $ip;
    public $data = null;
    public function __construct ($ip_to_check) {
       $this-&amp;gt;ip = $ip_to_check;
	   
    }

    public function run () {
       $this-&amp;gt;data = th($this-&amp;gt;ip);
	   $this-&amp;gt;kill;
    }
	
}

for($a=0;$a&amp;lt;=2000;$a=$a+100)//dowolna wartośc wykonywana w krokach co 100 wątków
{$zm[]=th_($a);

echo_($zm);
unset($zm);
}

function th_($co)
{$threads = [];
	for($a=0;$a&amp;lt;=100;$a++)
	{

$thread = new CheckIpThread($co+$a);

$thread-&amp;gt;ip=($co+$a);
	
    $threads []= $thread;
    $thread-&amp;gt;start();
$flaga=1;	
}
foreach ($threads as $thread) {
    $thread-&amp;gt;join();
}
$zm=[];
foreach ($threads as $thread) {
    $zm[]=($thread-&amp;gt;data);
}
unset($thread);
//$thread-&amp;gt;exit();
return $zm;
}


function th($wsad)
{return $wsad;//
}

function echo_($tekst,$def=0)//LIVE VIEV
{
       ob_flush();
       flush();
        //usleep(200);
	if($def===0)
		{var_dump($tekst);}
	if($def===1)
		{echo($tekst);}
		echo&quot;&amp;lt;/br&amp;gt;&quot;;

ob_end_flush();
ob_clean();		
}
?&amp;gt;
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>PHP</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/278077/php-threads-problem-z-wielowatkowoscia</guid>
<pubDate>Fri, 18 Aug 2017 08:16:28 +0000</pubDate>
</item>
<item>
<title>[C++/Qt] Wstrzymywanie działania wątków</title>
<link>https://forum.pasja-informatyki.pl/263677/c-qt-wstrzymywanie-dzialania-watkow</link>
<description>

&lt;p&gt;Witam wszystkich,
&lt;br&gt;

&lt;br&gt;
Napisałem aplikację (oczywiście na podstawie tutoriala na YT, bo wątki dopiero ruszyłem), która umożliwia uruchomienie wątku po naciśnięciu buttona, zatrzymanie go po naciśnięciu innego, jednak chciałbym jeszcze dodać funkcjonalność wsztrzymania działania wątku - zapauzowania go&amp;nbsp;(o ile jest taka możliwość).
&lt;br&gt;

&lt;br&gt;
W skrócie, aplikacja ta odlicza od 0 do 999 co 0.1 sekundy a wyniki odliczania wyświetla w label.
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
 for(int i=0; i&amp;lt;1000; i++)
    {
        if(this-&amp;gt;Stop) break;
        emit NumberChanged(i);
        this-&amp;gt;msleep(100);
    }&lt;/pre&gt;



&lt;p&gt;Stop to flaga, jeśli przyjmie wartość true (po naciśnięciu przycisku 'Zatrzymaj') to przerwie działanie pętli.
&lt;br&gt;

&lt;br&gt;
Co do pauzowania, mam&amp;nbsp;pewien pomysł, ale zastanawiam się, czy nie można tego zrobić inaczej (lepiej), czy nie ma do tego specjalnej metody.&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
 for(int i=0; i&amp;lt;1000; i++)
    {
        if(this-&amp;gt;Stop) break;
        while(this-&amp;gt;Pause);
        emit NumberChanged(i);
        this-&amp;gt;msleep(100);
    }&lt;/pre&gt;



&lt;p&gt;Oczywiście i tutaj Pause jest flagą, domyślnie ustawioną na 'false', po naciśnięcu przycisku ustawiana jest na 'true' i wtedy leci pętla w nieskończoność aż użytkownik naciśnie przycisk 'Start', gdzie po tym zdarzeniu flaga ta zostanie ustawiona ponownie na 'false' i przerwie działanie pętli while.
&lt;br&gt;

&lt;br&gt;
Pozdrawiam.&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/263677/c-qt-wstrzymywanie-dzialania-watkow</guid>
<pubDate>Wed, 21 Jun 2017 00:32:11 +0000</pubDate>
</item>
<item>
<title>Java wątki robiące tę samą rzecz</title>
<link>https://forum.pasja-informatyki.pl/256537/java-watki-robiace-te-sama-rzecz</link>
<description>Cześć, potrzebuję tak napisać obsługę wątków żeby każdy z nich robił tę samą rzecz (np. zwiększał ten sam licznik do osiągnięcia danej wartości). Zrobiłem już tak, że pulę liczb do jakiej licznik ma być zwiększany dzielę na liczbę wątków i każdy zwiększa swoją część. Jednak chciałbym, aby każdy brał pierwszą wolną opcję inkrementacji licznika, tak, aby wątki nie musiały na siebie czekać a kończyły kiedy któryś z nich osiągnie cel.&lt;br /&gt;
Czy ktoś może mi w tym pomóc</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/256537/java-watki-robiace-te-sama-rzecz</guid>
<pubDate>Wed, 24 May 2017 17:20:09 +0000</pubDate>
</item>
<item>
<title>Jak programować aplikacje wielowątkowe?</title>
<link>https://forum.pasja-informatyki.pl/251913/jak-programowac-aplikacje-wielowatkowe</link>
<description>Witam,&lt;br /&gt;
&lt;br /&gt;
ostatnio pracuję nad serwerem do aplikacji internetowych. W takim projekcie wielowątkowość raczej jest nieunikniona. No i przez to mam mętlik w głowie, jak ma wyglądać struktura/zarys serwera? Mam zerowe doświadczenie z wielowątkowością i nie wiem co powinno się stosować, czego unikać, jakie są dobre nawyki a jakie złe.&lt;br /&gt;
&lt;br /&gt;
Ogólnie to moją obecną ideą są 3 wątki które pracują niezależnie, w sensie nie ma jakiegoś punktu w którym dochodziłoby do ich synchronizacji (oczekiwania na zakończenia danych wątków). I nie wiem czy przypadkiem to nie jest jakiś karygodny błąd. Oczywiście zadbałem o to aby dane wykorzystywane przez parę wątków miały &amp;quot;blokadę&amp;quot; na czas operowania na nich.&lt;br /&gt;
&lt;br /&gt;
I jeszcze dopytam, czy korzystanie z jednego obiektu przez parę wątków to nic złego czy raczej unika się tego?&lt;br /&gt;
&lt;br /&gt;
Proszę o osoby które mają doświadczenie z programowaniem wielowątkowych o podzielenia się dobrymi, a przede wszystkim najważniejszymi radami i zasadami z tej dziedziny. Myślę że nie tylko mi się to przyda.</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/251913/jak-programowac-aplikacje-wielowatkowe</guid>
<pubDate>Mon, 08 May 2017 19:45:36 +0000</pubDate>
</item>
<item>
<title>Synchronizacja Java Wątki</title>
<link>https://forum.pasja-informatyki.pl/210690/synchronizacja-java-watki</link>
<description>

&lt;p&gt;Witam Serdecznie. Mam problem z synchronizacją watków.&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Program tutaj - oparty jest o dwa wątki, &amp;nbsp;rezultatem jest debet, Mam zastosować synchronizacje tak, aby debetu nie było na koncie ...&lt;/p&gt;



&lt;p&gt;Nie mam zielonego pojęcia jak to zrobić, próbowałem oznaczać metode [RUN, MySleep etc] jako synchronized, ale to nie przynosiło rezultatu. Chodzi mi o fakt, kiedy wątek jeden skorzysta z konta [ tutaj 120 ] to po jego pracy zmniejszy sie wartosc pieniedzy na koncie. Z koleji drugi watek korzystac powinien wtedy z tego juz zmienionego zasobu co spowoduje że warunek if sie nie wykona.&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Any examples? Dziękuje za poświęcony czas i pomoc.&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
class MySleep {
   public static void sleep( int i ) {
     try {
       Thread.sleep( i );
      }
     catch ( InterruptedException e ) {}
   }
}

class Konto {
   private double stan = 0.0;
   void   wplata( double ile )  { stan += ile; }
   void   wyplata( double ile ) { stan -= ile; }
   double stanKonta()           { return stan; }
}

class Zakupy implements Runnable {
   private Konto p;
   
   public void maszKonto( Konto p ) { this.p = p; };
   public void run() {
      double cena = 77.78;            // znam cene towaru
      MySleep.sleep( 2000 );          // chwila na zastanowienie...
      if ( p.stanKonta() &amp;gt; cena ) {   // sprawdzam czy mam pieniadze na koncie 
         System.out.println( &quot;Tu ja &quot; + Thread.currentThread().getName() + &quot; ide do kasy zaplacic&quot; );
         MySleep.sleep( 5000 );       // ide do kasy
         p.wyplata( cena );           // wyplata pieniedzy 
      }
   }
}

class Start {
   public static void main( String[] argv ) {
      Konto k = new Konto();
      k.wplata( 120.0 );
      
      Zakupy zakupyJasia = new Zakupy();
      zakupyJasia.maszKonto( k );
      
      Zakupy zakupyMarysi = new Zakupy();
      zakupyMarysi.maszKonto( k );
      
      Thread watekJasia = new Thread( zakupyJasia );
      watekJasia.setName( &quot;watek Jasia&quot; );

      Thread watekMarysi = new Thread( zakupyMarysi );
      watekMarysi.setName( &quot;watek Marysi&quot; );

      watekMarysi.start();
      watekJasia.start();

      System.out.println( &quot;Wlasnie uruchomione zostaly 2 odrebne watki - czekamy na rezultat&quot; );
      
      MySleep.sleep( 10000 );
      
      System.out.println( &quot;Sprawdzamy stan konta: &quot; + k.stanKonta() ); 
      
      if ( k.stanKonta() &amp;lt; 0 ) { // tu nalezy wyrazic zdziwienie
         System.out.println( &quot;Przecież sie umawialiśmy - przed zakupem masz sprawdzić czy są pieniędze na koncie !&quot; );
         System.out.println( &quot;A jest DEBET !!!!&quot; );
      } 
   }
}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/210690/synchronizacja-java-watki</guid>
<pubDate>Thu, 29 Dec 2016 18:31:15 +0000</pubDate>
</item>
<item>
<title>Java wstrzymanie wątków</title>
<link>https://forum.pasja-informatyki.pl/201840/java-wstrzymanie-watkow</link>
<description>

&lt;p&gt;Hejka, uczę się właśnie Javy oraz mam problem ze zrozumieniem wstrzymania pracy wątku oraz jego wznowienia. Mianowicie mając taki kod&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
public void run() 
{
//coś 
synchronized{
while(pause) 
    wait() ;
} 
} 

void mypause() 
{
pause=true;
} 

synchronized void myresume() 
{
pause=false;
notify();
} &lt;/pre&gt;



&lt;p&gt;To dlaczego nie możemy dać wait() &amp;nbsp;do metody mypause tylko musi być w głównej pętli?&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Przecież wait wstrzymuje pracę wątku aż do momentu wywołania notify, więc dlaczego ma to być w pętli while?&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/201840/java-wstrzymanie-watkow</guid>
<pubDate>Wed, 30 Nov 2016 23:26:24 +0000</pubDate>
</item>
<item>
<title>[C++] [wątki] Jednoczesne działanie minutnika i wczytywanie zmiennej (cin)</title>
<link>https://forum.pasja-informatyki.pl/198723/c-watki-jednoczesne-dzialanie-minutnika-i-wczytywanie-zmiennej-cin</link>
<description>Witajcie dobrzy ludzie.&lt;br /&gt;
&lt;br /&gt;
Mam problem z projektem z programowania, a mianowicie, celem programu jest badanie zdolności analitycznych człowieka, wyświetla równania do obliczenia w pamięci o różnym stopniu trudności, następnie po zakończeniu testu ma wyświetlać wyniki. Skończyłem pisać większość programu, ale zaciąłem się na jednym aspekcie. Test ma się kończyć równo 60 sekund po jego rozpoczęciu (czas wyświetlany na bieżąco) , co więcej jeśli człowiek nie odpowie na równanie w ciągu 10 sekund, to równanie ma zniknąć i zaliczyć jako błędną odpowiedź. I tu pojawia się problem. Jak jednocześnie wczytywać odpowiedzi użytkownika i nie blokować działania timera? Wiem, że istnieje coś takiego jak wielowątkowość, ale niestety nie potrafię tego zaimplementować (od rana siedzę nad dokumentacją z marnym skutkiem). Czy ktoś rozwiązał w przeszłości podobny problem? Jeśli tak to proszę o jakieś przykłady z wczytywaniem zmiennych &amp;quot;w tle&amp;quot;, wskazówki, ewentualnie literaturę. Dodam tylko, że w projekcie mogę korzystać tylko ze standardowych bibliotek, więc jedyną opcją wielowątkowości jest biblioteka thread.h.&lt;br /&gt;
Za wszystkie odpowiedzi z góry dziękuję. :)</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/198723/c-watki-jednoczesne-dzialanie-minutnika-i-wczytywanie-zmiennej-cin</guid>
<pubDate>Sat, 19 Nov 2016 23:45:35 +0000</pubDate>
</item>
<item>
<title>Jak otworzyc dwie konsole?</title>
<link>https://forum.pasja-informatyki.pl/195032/jak-otworzyc-dwie-konsole</link>
<description>Czesc, dopiero zaczalem sie uczyc uzywania watkow i do tego chcialbym napisac program w ktorym odpalaja sie dwa okna konsoli i na jednym oknie wykonuje wyjscia ktore obsluguje watek1 a w drugim oknie operacje wejscia obslugiwane przez watek2 ? &lt;br /&gt;
&lt;br /&gt;
teraz pytanie do forumowiczow jak utworzyc obiekt konsola o ile cos takiego istnieje. &lt;br /&gt;
&lt;br /&gt;
Uzywam linuxa, chodzi mi o to zeby miec dwa okienka xterm'a. &lt;br /&gt;
&lt;br /&gt;
Ktos cos?&lt;br /&gt;
&lt;br /&gt;
PS:&lt;br /&gt;
&lt;br /&gt;
terminate called without an active exception &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
zsh: abort (core dumped) &amp;nbsp;./Watki &lt;br /&gt;
&lt;br /&gt;
Terminal podczas dzialania programu wywalil mi cos takiego kiedy zapetlilem funkcje w ktorej sobie wczytuje dane poprzez cin&amp;gt;&amp;gt; a kiedy nie byla zapetlona system nie mial problemu ? Czy to dlatego ze probuje wykonac kilka rzeczy w jednej biednej konsoli?</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/195032/jak-otworzyc-dwie-konsole</guid>
<pubDate>Tue, 08 Nov 2016 17:32:54 +0000</pubDate>
</item>
<item>
<title>Java klasa Thread. Problem</title>
<link>https://forum.pasja-informatyki.pl/133541/java-klasa-thread-problem</link>
<description>

&lt;p&gt;Witam. W poniższym kodzie, najpierw wykonuje się polecenie wyświetlania na ekranie, dopiero później leci for. Dlaczego tak się dzieje ? Przecież według kolejności najpierw powinna się wykonać funkcja Thread().&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
void load_battery()
	{ 
        new Thread()
        {
			String word=&quot;|_|&quot;;
            public void run()
            {
                try {
                    for(int i=0; i&amp;lt;10; i++)
                    {
                            System.out.println(word);
                            Thread.sleep(1000);
                    }
                } catch (InterruptedException e) {}
            }
        }.start();
        System.out.println(&quot;Bateria naladowana dla &quot; + Name);
	}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/133541/java-klasa-thread-problem</guid>
<pubDate>Sat, 23 Apr 2016 14:11:38 +0000</pubDate>
</item>
<item>
<title>Podawanie metody z referencją (Bądź wskaźnikiem) do konstruktora klasy thread</title>
<link>https://forum.pasja-informatyki.pl/115965/podawanie-metody-z-referencja-badz-wskaznikiem-do-konstruktora-klasy-thread</link>
<description>

&lt;p&gt;Witam, mój problem jakiś czas temu polegał na tym że nie mogłem uzywac referencji w funkcji która trafia do konstruktora klasy thread, tak to wyglądało:&lt;/p&gt;



&lt;p&gt;void funkcja(int &amp;amp;zmienna)
&lt;br&gt;
thread zadanie(funkcja, zmienna)&lt;/p&gt;



&lt;p&gt;To wywalało błąd więc przerobiłem to w oto taki sposób:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
void funkcja(int *zmienna)
thread zadanie(funkcja, &amp;amp;zmienna)&lt;/pre&gt;



&lt;p&gt;No i rzeczywiście to zadziałało:&lt;/p&gt;



&lt;p&gt;Potem funkcja funkcja wylądowała w klasie a zmienna zadanie w innej funkcji tej samej klasy.
&lt;br&gt;
Błąd tym razem dotyczył tego że zmienna zadanie nie wiedziała gdzie jest funkcja funkcja.
&lt;br&gt;
Poczytałem trochę w internecie i znalazłem wzmiankę o tym że w takiej sytuacji trzeba przy podaniu metody do konstruktora klasy thread zadanie dać przedrostek &amp;amp;klasa::&lt;/p&gt;



&lt;p&gt;ostatecznie tak to wyglądało:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
void klasa::funkcja(int *zmienna)
thread zadanie(&amp;amp;klasa::funkcja, &amp;amp;zmienna)&lt;/pre&gt;



&lt;p&gt;Jednakże znowu pojawił się błąd:&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=11995754690105630189&quot; style=&quot;height:48px; width:581px&quot;&gt;
&lt;br&gt;
Próbowałem zamienić wskaźnik w metodzie na referencje, ale błąd dalej wyskakiwał.&amp;nbsp;Co robić?&lt;/p&gt;



&lt;p&gt;Pozdrawiam, z góry dziękuję za odpowiedź&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/115965/podawanie-metody-z-referencja-badz-wskaznikiem-do-konstruktora-klasy-thread</guid>
<pubDate>Sun, 06 Mar 2016 11:21:31 +0000</pubDate>
</item>
<item>
<title>Klasa thread w C++</title>
<link>https://forum.pasja-informatyki.pl/111757/klasa-thread-w-c</link>
<description>

&lt;p&gt;Witam , czemu kod który znajduje się pod t1.join() już się nie wykonuje:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;thread&amp;gt;
#include &amp;lt;Windows.h&amp;gt;

using namespace std;

void f1()
{
	while (true)
	{
		Sleep(100);
		cout &amp;lt;&amp;lt; 1 &amp;lt;&amp;lt; endl;
	}
}
void f2()
{
	while (true)
	{
		Sleep(150);
		cout &amp;lt;&amp;lt; 2 &amp;lt;&amp;lt; endl;
	}
}

int main()
{
	thread t1(f1);
	t1.join();

	thread t2(f2);
	t2.join();
	return 0;
}
&lt;/pre&gt;



&lt;p&gt;Mógłby mi ktoś wytłumaczyć dlaczego klasa thread nie wykonuje się w tle? Ponieważ chyba powinna ;) .&lt;/p&gt;



&lt;p&gt;Pozdrawiam, Z góry dziękuję za odpowiedź.&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/111757/klasa-thread-w-c</guid>
<pubDate>Mon, 22 Feb 2016 18:47:57 +0000</pubDate>
</item>
<item>
<title>Wątki w grze</title>
<link>https://forum.pasja-informatyki.pl/97676/watki-w-grze</link>
<description>Witam,&lt;br /&gt;
&lt;br /&gt;
Mam pytanie odnoście wątków w grach czy programach.&lt;br /&gt;
&lt;br /&gt;
Pisząc program nie raz trzeba skorzystać z wątków aby program działał płynnie i tutaj rodzi się pytanie.&lt;br /&gt;
&lt;br /&gt;
Na jak wielu wątkach powinna opierać się gra aby w dzisiejszych czasach była wydajność zmaksymalizowana?&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Drugie pytanie, można używać wątków zaprojektowanych w SFML czy lepiej wbudowanej biblioteki w C++?&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Pozdrawiam</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/97676/watki-w-grze</guid>
<pubDate>Sun, 10 Jan 2016 16:26:35 +0000</pubDate>
</item>
<item>
<title>Rożnica między Task a Thread.</title>
<link>https://forum.pasja-informatyki.pl/11248/roznica-miedzy-task-a-thread</link>
<description>

&lt;p&gt;Witam.&lt;/p&gt;



&lt;p&gt;Mam proste pytanie.&lt;/p&gt;



&lt;p&gt;Jaka jest &lt;strong&gt;dokładna&lt;/strong&gt; róznica między Task a Thread?&lt;/p&gt;



&lt;p&gt;Czy Task można zamiennie używać z AsyncCallback? (&amp;nbsp;x.begininvoke())&lt;/p&gt;</description>
<category>C#</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/11248/roznica-miedzy-task-a-thread</guid>
<pubDate>Sat, 18 Apr 2015 17:23:47 +0000</pubDate>
</item>
</channel>
</rss>