HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 26.10.2009, 14:10
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Код:
#!/usr/bin/perl
use threads;
use threads::shared;
my $n : shared;

$a = gets();
print $_, "\n" for @$a;
#print $a . "\n";

sub gets {
  $thr = 10;
  $n = 0;
  for(0..$thr) {
    $trl[$_] = threads->create(\&gets1);
  }
  for(0..$thr) {
    $res[$_] = $trl[$_]->join;
  }
  sub gets1 {
    $| = 1;
    $ii = "";
    while ($n < 10) {
      { lock($n);
      $n++; }
      $ii .= $n;
      $hash{$n} = $ii;
      #print $ii . "\n";
    }
    #print $ii, "\n";
    return \%hash
  }
  return \@res;
}
Относительно кода выше - как вернуть хеш, не так же ведь. И надо ли его шарить в мультитреде. Т.е. нужно, чтобы ключи у хеша были именно как в коде выше = $n. Только так потом можно будет идентифицировать данные

Последний раз редактировалось Pashkela; 26.10.2009 в 14:13..
 
Ответить с цитированием

  #2  
Старый 26.10.2009, 14:36
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Ну если юзать расшаренный хэш, то
Код:
#!/usr/bin/perl                 
use threads;                    
use threads::shared;            
my $n : shared;                 
my %hash : shared = ();         
#my $refhash : shared = \%hash; 

$a = gets();
print $_, ' => ', $hash{$_}, "\n" for keys %hash;

sub gets {
  $thr = 10;
  $n = 0;
  %res = ();
  for(0..$thr) {
    $trl[$_] = threads->create(\&gets1);
  }
  for(0..$thr) {
    $trl[$_]->join;
  }
  sub gets1 {
    $| = 1;
    $ii = "";
    while ($n < 10) {
      { lock($n);
      $n++; }
      $ii .= $n;
      $hash{$n} = $ii;
    }
  }
}
 
Ответить с цитированием

  #3  
Старый 26.10.2009, 14:41
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

спасибо, только чото не пойму - нет ретурна, что такое %res = (); и какую функцию несет

Но это то, что надо, так или иначе!!!! Сенкс большое
 
Ответить с цитированием

  #4  
Старый 26.10.2009, 14:56
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

%res = (); - это пустой хэш )
Ретурны я убрал, т.к. хэш расшаренный и возвращать как бы ничего не надо. А вот пример без использования шарного хэша и с ретурнами
Код:
#!/usr/bin/perl               
use threads;                  
use threads::shared;          
my $n : shared;               

$a = gets();
print $_, ' => ', $a->{$_}, "\n" for sort {$a <=> $b} keys %$a;
#print $a . "\n";

sub gets {
  $thr = 10;
  $n = 0;
  %res = ();
  for(0..$thr) {
    $trl[$_] = threads->create(\&gets1);
  }
  for(0..$thr) {
    #$res[$_] = $trl[$_]->join;
    %res = (%res, %{$trl[$_]->join});
    #print $n, "\n";
  }
  sub gets1 {
    $| = 1;
    $ii = "";
    while ($n < 10) {
      { lock($n);
      $n++; }
      $ii .= $n;
      $hash{$n} = $ii;
      #print $ii . "\n";
    }
    #print $ii, "\n";
    return \%hash
  }
  return \%res;
}
 
Ответить с цитированием

  #5  
Старый 26.10.2009, 15:09
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Великолепно! Оба варианта рабочие. Чем один лучше или хуже другого? Шара больше памяти жрет при большом потоке или ...?
 
Ответить с цитированием

  #6  
Старый 27.10.2009, 05:07
GenTao
Участник форума
Регистрация: 10.10.2009
Сообщений: 133
Провел на форуме:
143706

Репутация: -1
По умолчанию

PHP код:

my 
@fuck = (1..10);
my @= (18,19);

sub shit {

my(@x,@y) = @_;
print @
x."\r\n";
print @
y."\r\n";

}

shit(@fuck,@s);

system("PAUSE"); 
Выводит 12,0.Хотел вывести значения обоих массивов...
 
Ответить с цитированием

  #7  
Старый 27.10.2009, 07:58
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Цитата:
Сообщение от GenTao  
PHP код:

my 
@fuck = (1..10);
my @= (18,19);

sub shit {

my(@x,@y) = @_;
print @
x."\r\n";
print @
y."\r\n";

}

shit(@fuck,@s);

system("PAUSE"); 
Выводит 12,0.Хотел вывести значения обоих массивов...
Код:
#!/usr/bin/perl

use strict;
use warnings;

$\ = "\n";
my @fuck = (1..10);
my @s = (18,19);

sub shit {
  my ($x, $y) = @_;

  print join ', ', @$x;
  print join ', ', @$y;
}

shit (\@fuck, \@s);
 
Ответить с цитированием

  #8  
Старый 27.10.2009, 05:37
GenTao
Участник форума
Регистрация: 10.10.2009
Сообщений: 133
Провел на форуме:
143706

Репутация: -1
По умолчанию

Как осуществить запись в фаил?:

open(b,">s.txt);
print b "sam";
close(b);

В итоге пусто(
 
Ответить с цитированием

  #9  
Старый 27.10.2009, 05:42
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

#!/usr/bin/perl
open(b,">>s.txt");
print b "sam";
close(b);
 
Ответить с цитированием

  #10  
Старый 27.10.2009, 05:51
GenTao
Участник форума
Регистрация: 10.10.2009
Сообщений: 133
Провел на форуме:
143706

Репутация: -1
По умолчанию

хмм,запись заработала,а вот чтение хромает:

open(b,"<s.txt");
print b STDOUT; # по всякому уже))разве что в другой фаил копирнуть могу,но на #консольку хотел
close(b);
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
[php] Новичкам: задаем вопросы _Great_ PHP 16396 17.06.2010 21:19
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ