Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

INTRA-THREAD COMM

Name: Anonymous 2008-12-30 19:02

Can anyone point me towards a good, simple method for intra-thread communication, possibly examples in C? I don't need anything intense just simple data sharing

Name: Anonymous 2008-12-30 19:26

Inter.

Name: Anonymous 2008-12-30 19:43

posix?

Name: Anonymous 2008-12-30 21:07

It's not possible.

Name: Anonymous 2008-12-30 21:28

#include <stdio.h>

char BUFFA[5];

int main(int argc, char**argv) {
  int p;

  if ((p = fork()) > 0) {
    while(strcmp(&BUFFA, "PRINT") == 0) {
      strncpy(&BUFFA, "PRINT", 6);
    }
  } else if (p == 0) {
    while(strcmp(&BUFFA, "PRINT")) {
        printf("IPC ");
    strncpy(&BUFFA, "STOP", 5);
      }
  }
}

Name: Anonymous 2008-12-30 21:49

OH FUCK A REAL QUESTION, QUICK SAGE IT

Name: Anonymous 2008-12-30 21:51

Just use volatile and spinlocks. The x86 memory model is very forgiving.

Name: Anonymous 2008-12-30 22:37

>>6
It's not about the `reality' of the question, but the pointlessness.  You see, /prog/ has a commitment to quality, and we gain none of it by letting newbies stuff our precious board full of their naïve questions.  Take it to Google, or Usenet, or Slashdot.  Perhaps a lesser chan.  It doesn't matter to us…can't you see we're busy here?

>>1
Come back when you achieve Satori, kid.

Name: Anonymous 2008-12-30 22:45

>>1
I recommend Haskell's implementation of STM[1].


1. 81.86.222.238 et al. Software Transactional Memory. http://en.wikipedia.org/wiki/Software_transactional_memory, accessed 12-30-2008.

Name: Anonymous 2008-12-31 2:31

>>1
Erlang.

Name: Anonymous 2008-12-31 5:15

Here you go, OP.  Use a proper language for the job.

%% A process whose only job is to keep a counter.
 %% First version
 -module(counter).
 -export([start/0, codeswitch/1]).
 
 start() -> loop(0).
 
 loop(Sum) ->
   receive
      {increment, Count} ->
         loop(Sum+Count);
      {counter, Pid} ->
         Pid ! {counter, Sum},
         loop(Sum);
      code_switch ->
         ?MODULE:codeswitch(Sum) % Force the use of 'codeswitch/1' from the latest MODULE version
   end.
  
 codeswitch(Sum) -> loop(Sum).

Name: Anonymous 2008-12-31 10:14

Here you go, OP.  Use a proper language for the job.
%% En process vars enda uppgift är att hålla en räknare.
 %% Første versjon
 -modul(counter).
 -eksport([start/0, codeswitch/1]).

 stef(;)

 main() -> lykkja(0).
 
 lykkja(Sum) ->
   stofn
   vallok
      {increment, Count} ->
         lykkja(Sum+Count);
      {counter, Pid} ->
         Pid ! {counter, Sum},
         lykkja(Sum);
      cøde_switch ->
         ?MODULE:codeswitch(Sum) % Force användningen av 'cødeswitch/1' från den senaste MODUL version
   lykkjulok,
   stofnlok
 
 codeswitch(Sum) -> loop(Sum).

Name: Anonymous 2008-12-31 10:14

Here you go, OP.  Use a proper language for the job.
%% En process vars enda uppgift är att hålla en räknare.
 %% Første versjon
 -modul(counter).
 -eksport([start/0, codeswitch/1]).

 stef(;)

 main() -> lykkja(0).
 
 lykkja(Sum) ->
   stofn
   vallok
      {increment, Count} ->
         lykkja(Sum+Count);
      {counter, Pid} ->
         Pid ! {counter, Sum},
         lykkja(Sum);
      cøde_switch ->
         ?MODULE:codeswitch(Sum) % Force användningen av 'cødeswitch/1' från den senaste MODUL version
   lykkjulok,
   stofnlok
 
 codeswitch(Sum) -> loop(Sum).

Name: Anonymous 2008-12-31 10:59


PROC proc1(CHAN OF BYTE c, CHAN OF BYTE b)

   BYTE b;
  
   WHILE TRUE
      SEQ
         c ? b
         s ! b
:

PROC proc2(CHAN OF BYTE c)

   VAL []CHAR str IS "GRUNNUR";

   WHILE TRUE
      i=0 FOR SIZE str
         c ! str[i]
:

PROC main(CHAN OF BYTE keyboard, screen, error)

   CHAN OF BYTE a;

   PAR
      proc1(a, screen)
      proc2(a)
:

Name: Anonymous 2008-12-31 10:59


PROC proc1(CHAN OF BYTE c, CHAN OF BYTE b)

   BYTE b;
  
   WHILE TRUE
      SEQ
         c ? b
         s ! b
:

PROC proc2(CHAN OF BYTE c)

   VAL []CHAR str IS "GRUNNUR";

   WHILE TRUE
      i=0 FOR SIZE str
         c ! str[i]
:

PROC main(CHAN OF BYTE keyboard, screen, error)

   CHAN OF BYTE a;

   PAR
      proc1(a, screen)
      proc2(a)
:

Name: Anonymous 2008-12-31 10:59


PROC proc1(CHAN OF BYTE c, CHAN OF BYTE b)

   BYTE b;
  
   WHILE TRUE
      SEQ
         c ? b
         s ! b
:

PROC proc2(CHAN OF BYTE c)

   VAL []CHAR str IS "GRUNNUR";

   WHILE TRUE
      i=0 FOR SIZE str
         c ! str[i]
:

PROC main(CHAN OF BYTE keyboard, screen, error)

   CHAN OF BYTE a;

   PAR
      proc1(a, screen)
      proc2(a)
:

Name: Anonymous 2008-12-31 11:56

>>12,13
Needs more "GRUNNUR"

Name: Anonymous 2008-12-31 13:29

"GRUNNUR"

Name: Anonymous 2008-12-31 15:09

I'm afraid, >>1, that inter-thread communication is impossible on shiichan. You must actually post a link to the the thread, like so: http://dis.4chan.org/read/prog/1230680782

Name: Anonymous 2008-12-31 15:09

I'm afraid, >>1, that inter-thread communication is impossible on shiichan. You must actually post a link to the the thread, like so: http://dis.4chan.org/read/prog/1230680782

Name: Anonymous 2008-12-31 22:57

I LIKE GLOBAL VARIABLES

Name: Anonymous 2009-01-01 12:56

Mutexes in pthreads not good enough for you? Look up inter process communication middle ware.

Name: Anonymous 2009-01-01 12:56

>>1
Oh yeah, and what thread implementation are you using?

Name: Anonymous 2009-01-01 14:52

>>23
windows threadsw

Name: Anonymous 2009-01-01 19:44

>>24
Now you have two problems.

Name: Anonymous 2009-01-01 22:04

>>25
Now you have two problemsw

Name: Anonymous 2009-01-02 1:27

>>26
Now you have two problemsw(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

Name: Anonymous 2009-01-02 1:29

>>26
It carries out and is w

Name: Anonymous 2009-01-02 2:20

wWinMain

Name: Anonymous 2009-01-02 10:34

wwhat is going on

Name: Anonymous 2009-01-02 13:39

win.GetMain().SetWStrPtr32LgLgConvertFromLz2( (LPSTRZ)strNewVal, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, *(new Int(0)) );

Name: wampu wantsu 2009-01-02 13:41

wampu wantsu

Don't change these.
Name: Email:
Entire Thread Thread List