SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Perl Programming
                 Course
            Processes and threads




Krassimir Berov

I-can.eu
Contents
1. What is a process
2. What is a thread
3. Comparison
4. Threads
   • Threaded Program Models
   • Creating and identifying Threads
   • Thread Management
   • Sharing Data
   • Synchronization and control
Contents
5. Processes
  • fork
  • pipe
  • open
  • ...
What is a process
• process
  • An instance of a running program
  • Two or more separate processes could be
    running the same program independently
    at the same time
  • A computer program itself is just a
    passive collection of instructions, while a
    process is the actual execution of those
    instructions
What is a thread
• thread
  • a thread is a flow of control through a program
    with a single execution point
  • there can be several threads of execution within
    a process
  • multiple threads share the same program code,
    operating system resources and operating
    system permissions as the process they belong
    to
Comparison
• Thread versus process
Comparison
• Processes
  • run independently and do not share
    resources
  • the fork() system call in UNIX causes creation
    of a new process
  • on Windows it is emulated by using threads
  • The return value from fork() is used to
    distinguish the parent from the child
  • the parent receives the child's process id, but
    the child receives zero
Comparison
• Processes                                          (2)
  • The new process (child process) is an exact
    copy of the calling process (parent process)
    except for the following:
    • The child process has a unique process ID
    • The child process has a different parent process
      ID (i.e., the process ID of the parent process)
    • The child process has its own copy of the parent's
      descriptors
Comparison
• Threads
  • A thread is an entity within a process that
    consists of the schedulable part of the
    process
  • Creating new threads is faster
  • Thread creation induces a peer
    relationship between all the threads of a
    process
Comparison
• Threads                           (2)

  • All threads can share
    • the parent process ID
    • the process memory
    • the process data
    • the process permissions
    • the Table with opened files
Comparison
• Threads                           (2)

  • Every thread has its own
    • thread ID
    • separate point of execution
    • thread-local storage
Threaded Program Models
• Three basic ways that you can structure a
  threaded program
  • Boss/Worker – one boss thread and one or more
    worker threads
  • Work Crew – several threads are created that do
    essentially the same thing to different pieces of
    data
  • Pipeline – a task is divided into a series of steps
     • the results of one step are passed to the thread
       processing the next step
     • Each thread does one thing to each piece of data
Creating
               and identifying Threads
• Example
 #threads_create.pl
 BEGIN {
      use Config;
      $Config{useithreads}
          or die('Threads support needed.');
 }
 use strict;use warnings;
 use threads;
 $|++;
 while (1){
      sleep 1;
      my $thread_id = threads->self()->tid;
      threads->create(&a_thread,$thread_id,[localtime]);
      #OR
      threads->new(&a_thread,$thread_id,[localtime]);
 }
 #...
Thread Management
• Waiting For A Thread To Exit
  • join
     • waits for a thread to exit,
     • cleans up after it,
     • returns any data the thread may have produced

 #threads_management.pl
 while ($i<30){
      sleep 1;
      my $odd = threads->create(&a_thread,[localtime]);
      print $odd->join(),$/;
      my $even = threads->new(&a_thread,[localtime]);
      print $even->join(),$/;
      $i++;
 }
 #...
Thread Management
• Ignoring A Thread
  • detach
     •   the thread runs until it's finished
     •   Perl will clean up after it automatically
     •   may not be joined
     •   any return data is lost
 #threads_management2.pl
 while ($i<30){
      sleep 1;
      my $odd = threads->create(&a_thread,[localtime]);
      $odd->detach();
      my $even = threads->new(&a_thread,[localtime]);
      $even->detach();
      $i++;
 }
 #...
Thread Management
• Process and Thread Termination
  • an action that terminates a process will
    terminate all running threads.
  • perl does an exit() when the main thread exits
 #threads_management3.pl
 my @threads = ();
 while ($i<30){
      push @threads, threads->new(&a_thread,[localtime]);
      push @threads, threads->new(&a_thread,[localtime]);
      $i++;
 }
 #uncomment and run again
 #print $_->join foreach @threads;
 #...
Sharing Data
• by default, no data is shared
• all the data associated with the current thread is
  copied to the new thread, and is subsequently
  private to that new thread
• all happens within the current process
  #sharing_data.pl
  my @threads = ();
  while ($i<30){
       push @threads, threads->new(&a_thread,[localtime]);
       push @threads, threads->new(&a_thread,[localtime]);
       $i++;
  }
  #uncomment and run again
  #print $_->join foreach @threads;
  #...
Sharing Data
• by default, no data is shared
• all the data associated with the current thread is
  copied to the new thread, and is subsequently
  private to that new thread
• all happens within the current process
• use threads::shared and the :shared attribute
  to share data
• only simple values or references to shared
  variables are allowed
Sharing Data
•Race conditions
  ●   caused by unsynchronized access to shared
      data
  ●   there's no way to be sure that nothing has
      happened to the shared data between the time
      you access it and the time you update it
  ●   $a += 5 or $a++ are not guaranteed to be
      atomic
Synchronization and control
• lock
  • takes a shared variable and puts a lock on it
  • no other thread may lock the variable until the
    variable is unlocked by the thread holding the lock
  • Unlocking happens automatically when the locking
    thread exits the block that contains the call to the
    lock() function
  • blocks the thread until the variable being locked is
    available
  • your thread can be sure that no other thread can lock
    that variable until the block containing the lock exits
  • does not prevent access to the variable, only lock
    attempts
Synchronization and control
• lock – Example
 #deadlock.pl
 use threads; use threads::shared;
 my $a :shared = 4;
 my $b :shared = 'foo';
 my $thr1 = threads->create(sub {
     lock($a);
     sleep(2);
     lock($b);
     $a++; $b .= $a;
 })->join ;
 my $thr2 = threads->create(sub {
     lock($b);
     sleep(2);
     lock($a);
     $a++; $b .= $a;
 })->join ;
 print $thr1,$/,$thr2,$/;
Synchronization and control

• Queues
 • A queue is a special thread-safe object
   that lets you put data in one end and take
   it out the other without having to worry
   about synchronization issues
 • add lists of scalars onto the end with
   enqueue()
 • pop scalars off the front of it with
   dequeue()
Synchronization and control

• Semaphores
 • generic locking mechanism
 • behave very much like lockable scalars,
   except that they can't hold data
 • must be explicitly unlocked
 • by default, semaphores behave like locks
 • see also: perlthrtut/Advanced Semaphores
Processes
• fork
  Does a fork(2) system call to create a new
  process running the same program at the same
  point
  • returns the child pid to the parent process, 0 to the
    child process, or undef if the fork is unsuccessful
  • file descriptors are shared, while everything else is
    copied
  • beginning with v5.6.0, Perl will attempt to flush all
    files opened for output before forking the child
    process
Processes
• fork – Example
 #io-socket-tcp-server-fork.pl
 #...
 sub REAPER {
      1 until (-1 == waitpid(-1, WNOHANG));
      $SIG{CHLD} = &REAPER;
 }
 $SIG{CHLD} = &REAPER;

 print "Server ($0) running on port $port...n";
 while (my $connection = $server->accept) {
     if (my $pid = fork){
         handle_connection($connection,$$);
     }
 }
 $server->close();
IPC
• pipe READHANDLE,WRITEHANDLE
 • Opens a pair of connected pipes like the
   corresponding system call.
 • Perl's pipes use IO buffering, so you may need to set
   $| to flush your WRITEHANDLE after each command,
   depending on the application.

 pipe (READ, WRITE);
 select WRITE;
 $| = 1;
 #...
IPC
• system PROGRAM LIST
  • exactly the same thing as exec LIST , except
    that a fork is done first, and the parent
    process waits for the child process to
    complete
  • The return value is the exit status of the
    program as returned by the wait call
  • see perlfunc/system
IPC
• open
 open(MAIL, "|/usr/lib/sendmail -oi -t")
     or die "can't fork sendmail: $!";

 print MAIL <<EOF;
 From: $0
 To: you@example.com
 Subject: blah

 EOF

 close(MAIL)
Processes and threads
• Ressources
  • Professional Perl Programming
    (Chapter 22 – Creating and Managing Processes)
  • perldoc perlthrtut
  • http://en.wikipedia.org/wiki/Process_%28computing%29
  • http://en.wikipedia.org/wiki/Thread_%28computer_science%29
  • http://gauss.ececs.uc.edu/Users/Franco/ForksThreads/forks.html

  • perldoc perlipc
  • perldoc perlfork
Processes and threads




Questions?

Mais conteúdo relacionado

Mais procurados

Process synchronization in Operating Systems
Process synchronization in Operating SystemsProcess synchronization in Operating Systems
Process synchronization in Operating SystemsRitu Ranjan Shrivastwa
 
Presentation on Segmentation
Presentation on SegmentationPresentation on Segmentation
Presentation on SegmentationPriyanka bisht
 
Distributed operating system
Distributed operating systemDistributed operating system
Distributed operating systemPrankit Mishra
 
Inter Process Communication Presentation[1]
Inter Process Communication Presentation[1]Inter Process Communication Presentation[1]
Inter Process Communication Presentation[1]Ravindra Raju Kolahalam
 
Memory Management in OS
Memory Management in OSMemory Management in OS
Memory Management in OSvampugani
 
Distributed operating system(os)
Distributed operating system(os)Distributed operating system(os)
Distributed operating system(os)Dinesh Modak
 
Dynamic interconnection networks
Dynamic interconnection networksDynamic interconnection networks
Dynamic interconnection networksPrasenjit Dey
 
deadlock avoidance
deadlock avoidancedeadlock avoidance
deadlock avoidancewahab13
 
Process management os concept
Process management os conceptProcess management os concept
Process management os conceptpriyadeosarkar91
 
Multiprocessor
MultiprocessorMultiprocessor
MultiprocessorNeel Patel
 
Interconnection Network
Interconnection NetworkInterconnection Network
Interconnection NetworkHeman Pathak
 
Instruction pipeline: Computer Architecture
Instruction pipeline: Computer ArchitectureInstruction pipeline: Computer Architecture
Instruction pipeline: Computer ArchitectureInteX Research Lab
 
Free Space Management, Efficiency & Performance, Recovery and NFS
Free Space Management, Efficiency & Performance, Recovery and NFSFree Space Management, Efficiency & Performance, Recovery and NFS
Free Space Management, Efficiency & Performance, Recovery and NFSUnited International University
 

Mais procurados (20)

Memory management
Memory managementMemory management
Memory management
 
Demand paging
Demand pagingDemand paging
Demand paging
 
Process synchronization in Operating Systems
Process synchronization in Operating SystemsProcess synchronization in Operating Systems
Process synchronization in Operating Systems
 
Presentation on Segmentation
Presentation on SegmentationPresentation on Segmentation
Presentation on Segmentation
 
Distributed operating system
Distributed operating systemDistributed operating system
Distributed operating system
 
Distributed Operating System_1
Distributed Operating System_1Distributed Operating System_1
Distributed Operating System_1
 
Inter Process Communication Presentation[1]
Inter Process Communication Presentation[1]Inter Process Communication Presentation[1]
Inter Process Communication Presentation[1]
 
Memory Management in OS
Memory Management in OSMemory Management in OS
Memory Management in OS
 
Distributed operating system(os)
Distributed operating system(os)Distributed operating system(os)
Distributed operating system(os)
 
Dynamic interconnection networks
Dynamic interconnection networksDynamic interconnection networks
Dynamic interconnection networks
 
deadlock avoidance
deadlock avoidancedeadlock avoidance
deadlock avoidance
 
Process management os concept
Process management os conceptProcess management os concept
Process management os concept
 
Operating system critical section
Operating system   critical sectionOperating system   critical section
Operating system critical section
 
CPU Scheduling Algorithms
CPU Scheduling AlgorithmsCPU Scheduling Algorithms
CPU Scheduling Algorithms
 
Multiprocessor
MultiprocessorMultiprocessor
Multiprocessor
 
Process of operating system
Process of operating systemProcess of operating system
Process of operating system
 
Interconnection Network
Interconnection NetworkInterconnection Network
Interconnection Network
 
Transport layer
Transport layer Transport layer
Transport layer
 
Instruction pipeline: Computer Architecture
Instruction pipeline: Computer ArchitectureInstruction pipeline: Computer Architecture
Instruction pipeline: Computer Architecture
 
Free Space Management, Efficiency & Performance, Recovery and NFS
Free Space Management, Efficiency & Performance, Recovery and NFSFree Space Management, Efficiency & Performance, Recovery and NFS
Free Space Management, Efficiency & Performance, Recovery and NFS
 

Destaque

Processes and Processors in Distributed Systems
Processes and Processors in Distributed SystemsProcesses and Processors in Distributed Systems
Processes and Processors in Distributed SystemsDr Sandeep Kumar Poonia
 
Os presentation process
Os presentation processOs presentation process
Os presentation processNaseer Ahmad
 
Process in operating system
Process in operating systemProcess in operating system
Process in operating systemChetan Mahawar
 
Processes Control Block (Operating System)
Processes Control Block (Operating System)Processes Control Block (Operating System)
Processes Control Block (Operating System)Imdad Ullah
 
Process management
Process managementProcess management
Process managementBirju Tank
 
Introduction to Computers
Introduction to ComputersIntroduction to Computers
Introduction to ComputersSamudin Kassan
 

Destaque (8)

Processes and Processors in Distributed Systems
Processes and Processors in Distributed SystemsProcesses and Processors in Distributed Systems
Processes and Processors in Distributed Systems
 
Os presentation process
Os presentation processOs presentation process
Os presentation process
 
Process in operating system
Process in operating systemProcess in operating system
Process in operating system
 
Chapter 3 - Processes
Chapter 3 - ProcessesChapter 3 - Processes
Chapter 3 - Processes
 
Lecture 5 process concept
Lecture 5   process conceptLecture 5   process concept
Lecture 5 process concept
 
Processes Control Block (Operating System)
Processes Control Block (Operating System)Processes Control Block (Operating System)
Processes Control Block (Operating System)
 
Process management
Process managementProcess management
Process management
 
Introduction to Computers
Introduction to ComputersIntroduction to Computers
Introduction to Computers
 

Semelhante a Perl Programming Course - Processes and Threads

Course 102: Lecture 18: Process Life Cycle
Course 102: Lecture 18: Process Life CycleCourse 102: Lecture 18: Process Life Cycle
Course 102: Lecture 18: Process Life CycleAhmed El-Arabawy
 
Threads in Operating System | Multithreading | Interprocess Communication
Threads in Operating System | Multithreading | Interprocess CommunicationThreads in Operating System | Multithreading | Interprocess Communication
Threads in Operating System | Multithreading | Interprocess CommunicationShivam Mitra
 
Threads in java, Multitasking and Multithreading
Threads in java, Multitasking and MultithreadingThreads in java, Multitasking and Multithreading
Threads in java, Multitasking and Multithreadingssusere538f7
 
Cutting Back Processing Time
Cutting Back Processing TimeCutting Back Processing Time
Cutting Back Processing TimeHenrique Moody
 
Operating Systems 1 (7/12) - Threads
Operating Systems 1 (7/12) - ThreadsOperating Systems 1 (7/12) - Threads
Operating Systems 1 (7/12) - ThreadsPeter Tröger
 
Processes, Threads.pptx
Processes, Threads.pptxProcesses, Threads.pptx
Processes, Threads.pptxLECO9
 
Processes, Threads.pptx
Processes, Threads.pptxProcesses, Threads.pptx
Processes, Threads.pptxSKUP1
 
Multithreaded Programming Part- II.pdf
Multithreaded Programming Part- II.pdfMultithreaded Programming Part- II.pdf
Multithreaded Programming Part- II.pdfHarika Pudugosula
 
Chapter -2 operating system presentation
Chapter -2 operating system presentationChapter -2 operating system presentation
Chapter -2 operating system presentationchnrketan
 
OOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptxOOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptxArulmozhivarman8
 
Multithreading
MultithreadingMultithreading
MultithreadingF K
 
Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Charles Nutter
 

Semelhante a Perl Programming Course - Processes and Threads (20)

MULTI THREADING.pptx
MULTI THREADING.pptxMULTI THREADING.pptx
MULTI THREADING.pptx
 
Course 102: Lecture 18: Process Life Cycle
Course 102: Lecture 18: Process Life CycleCourse 102: Lecture 18: Process Life Cycle
Course 102: Lecture 18: Process Life Cycle
 
Threads in Operating System | Multithreading | Interprocess Communication
Threads in Operating System | Multithreading | Interprocess CommunicationThreads in Operating System | Multithreading | Interprocess Communication
Threads in Operating System | Multithreading | Interprocess Communication
 
System Programming and Administration
System Programming and AdministrationSystem Programming and Administration
System Programming and Administration
 
Threads in java, Multitasking and Multithreading
Threads in java, Multitasking and MultithreadingThreads in java, Multitasking and Multithreading
Threads in java, Multitasking and Multithreading
 
Cutting Back Processing Time
Cutting Back Processing TimeCutting Back Processing Time
Cutting Back Processing Time
 
Operating Systems 1 (7/12) - Threads
Operating Systems 1 (7/12) - ThreadsOperating Systems 1 (7/12) - Threads
Operating Systems 1 (7/12) - Threads
 
Processes, Threads.pptx
Processes, Threads.pptxProcesses, Threads.pptx
Processes, Threads.pptx
 
Processes, Threads.pptx
Processes, Threads.pptxProcesses, Threads.pptx
Processes, Threads.pptx
 
Multithreaded Programming Part- II.pdf
Multithreaded Programming Part- II.pdfMultithreaded Programming Part- II.pdf
Multithreaded Programming Part- II.pdf
 
Chapter -2 operating system presentation
Chapter -2 operating system presentationChapter -2 operating system presentation
Chapter -2 operating system presentation
 
Scheduling Thread
Scheduling  ThreadScheduling  Thread
Scheduling Thread
 
OOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptxOOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptx
 
Java
JavaJava
Java
 
Java threads
Java threadsJava threads
Java threads
 
Multithreading
MultithreadingMultithreading
Multithreading
 
multithreading
multithreadingmultithreading
multithreading
 
Java
JavaJava
Java
 
Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014
 
Threading.pptx
Threading.pptxThreading.pptx
Threading.pptx
 

Mais de Krasimir Berov (Красимир Беров) (14)

Хешове
ХешовеХешове
Хешове
 
Списъци и масиви
Списъци и масивиСписъци и масиви
Списъци и масиви
 
Скаларни типове данни
Скаларни типове данниСкаларни типове данни
Скаларни типове данни
 
Въведение в Perl
Въведение в PerlВъведение в Perl
Въведение в Perl
 
Network programming
Network programmingNetwork programming
Network programming
 
Working with databases
Working with databasesWorking with databases
Working with databases
 
Working with text, Regular expressions
Working with text, Regular expressionsWorking with text, Regular expressions
Working with text, Regular expressions
 
Subroutines
SubroutinesSubroutines
Subroutines
 
IO Streams, Files and Directories
IO Streams, Files and DirectoriesIO Streams, Files and Directories
IO Streams, Files and Directories
 
Syntax
SyntaxSyntax
Syntax
 
Hashes
HashesHashes
Hashes
 
Lists and arrays
Lists and arraysLists and arrays
Lists and arrays
 
Scalar data types
Scalar data typesScalar data types
Scalar data types
 
Introduction to Perl
Introduction to PerlIntroduction to Perl
Introduction to Perl
 

Último

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Último (20)

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

Perl Programming Course - Processes and Threads

  • 1. Perl Programming Course Processes and threads Krassimir Berov I-can.eu
  • 2. Contents 1. What is a process 2. What is a thread 3. Comparison 4. Threads • Threaded Program Models • Creating and identifying Threads • Thread Management • Sharing Data • Synchronization and control
  • 3. Contents 5. Processes • fork • pipe • open • ...
  • 4. What is a process • process • An instance of a running program • Two or more separate processes could be running the same program independently at the same time • A computer program itself is just a passive collection of instructions, while a process is the actual execution of those instructions
  • 5. What is a thread • thread • a thread is a flow of control through a program with a single execution point • there can be several threads of execution within a process • multiple threads share the same program code, operating system resources and operating system permissions as the process they belong to
  • 7. Comparison • Processes • run independently and do not share resources • the fork() system call in UNIX causes creation of a new process • on Windows it is emulated by using threads • The return value from fork() is used to distinguish the parent from the child • the parent receives the child's process id, but the child receives zero
  • 8. Comparison • Processes (2) • The new process (child process) is an exact copy of the calling process (parent process) except for the following: • The child process has a unique process ID • The child process has a different parent process ID (i.e., the process ID of the parent process) • The child process has its own copy of the parent's descriptors
  • 9. Comparison • Threads • A thread is an entity within a process that consists of the schedulable part of the process • Creating new threads is faster • Thread creation induces a peer relationship between all the threads of a process
  • 10. Comparison • Threads (2) • All threads can share • the parent process ID • the process memory • the process data • the process permissions • the Table with opened files
  • 11. Comparison • Threads (2) • Every thread has its own • thread ID • separate point of execution • thread-local storage
  • 12. Threaded Program Models • Three basic ways that you can structure a threaded program • Boss/Worker – one boss thread and one or more worker threads • Work Crew – several threads are created that do essentially the same thing to different pieces of data • Pipeline – a task is divided into a series of steps • the results of one step are passed to the thread processing the next step • Each thread does one thing to each piece of data
  • 13. Creating and identifying Threads • Example #threads_create.pl BEGIN { use Config; $Config{useithreads} or die('Threads support needed.'); } use strict;use warnings; use threads; $|++; while (1){ sleep 1; my $thread_id = threads->self()->tid; threads->create(&a_thread,$thread_id,[localtime]); #OR threads->new(&a_thread,$thread_id,[localtime]); } #...
  • 14. Thread Management • Waiting For A Thread To Exit • join • waits for a thread to exit, • cleans up after it, • returns any data the thread may have produced #threads_management.pl while ($i<30){ sleep 1; my $odd = threads->create(&a_thread,[localtime]); print $odd->join(),$/; my $even = threads->new(&a_thread,[localtime]); print $even->join(),$/; $i++; } #...
  • 15. Thread Management • Ignoring A Thread • detach • the thread runs until it's finished • Perl will clean up after it automatically • may not be joined • any return data is lost #threads_management2.pl while ($i<30){ sleep 1; my $odd = threads->create(&a_thread,[localtime]); $odd->detach(); my $even = threads->new(&a_thread,[localtime]); $even->detach(); $i++; } #...
  • 16. Thread Management • Process and Thread Termination • an action that terminates a process will terminate all running threads. • perl does an exit() when the main thread exits #threads_management3.pl my @threads = (); while ($i<30){ push @threads, threads->new(&a_thread,[localtime]); push @threads, threads->new(&a_thread,[localtime]); $i++; } #uncomment and run again #print $_->join foreach @threads; #...
  • 17. Sharing Data • by default, no data is shared • all the data associated with the current thread is copied to the new thread, and is subsequently private to that new thread • all happens within the current process #sharing_data.pl my @threads = (); while ($i<30){ push @threads, threads->new(&a_thread,[localtime]); push @threads, threads->new(&a_thread,[localtime]); $i++; } #uncomment and run again #print $_->join foreach @threads; #...
  • 18. Sharing Data • by default, no data is shared • all the data associated with the current thread is copied to the new thread, and is subsequently private to that new thread • all happens within the current process • use threads::shared and the :shared attribute to share data • only simple values or references to shared variables are allowed
  • 19. Sharing Data •Race conditions ● caused by unsynchronized access to shared data ● there's no way to be sure that nothing has happened to the shared data between the time you access it and the time you update it ● $a += 5 or $a++ are not guaranteed to be atomic
  • 20. Synchronization and control • lock • takes a shared variable and puts a lock on it • no other thread may lock the variable until the variable is unlocked by the thread holding the lock • Unlocking happens automatically when the locking thread exits the block that contains the call to the lock() function • blocks the thread until the variable being locked is available • your thread can be sure that no other thread can lock that variable until the block containing the lock exits • does not prevent access to the variable, only lock attempts
  • 21. Synchronization and control • lock – Example #deadlock.pl use threads; use threads::shared; my $a :shared = 4; my $b :shared = 'foo'; my $thr1 = threads->create(sub { lock($a); sleep(2); lock($b); $a++; $b .= $a; })->join ; my $thr2 = threads->create(sub { lock($b); sleep(2); lock($a); $a++; $b .= $a; })->join ; print $thr1,$/,$thr2,$/;
  • 22. Synchronization and control • Queues • A queue is a special thread-safe object that lets you put data in one end and take it out the other without having to worry about synchronization issues • add lists of scalars onto the end with enqueue() • pop scalars off the front of it with dequeue()
  • 23. Synchronization and control • Semaphores • generic locking mechanism • behave very much like lockable scalars, except that they can't hold data • must be explicitly unlocked • by default, semaphores behave like locks • see also: perlthrtut/Advanced Semaphores
  • 24. Processes • fork Does a fork(2) system call to create a new process running the same program at the same point • returns the child pid to the parent process, 0 to the child process, or undef if the fork is unsuccessful • file descriptors are shared, while everything else is copied • beginning with v5.6.0, Perl will attempt to flush all files opened for output before forking the child process
  • 25. Processes • fork – Example #io-socket-tcp-server-fork.pl #... sub REAPER { 1 until (-1 == waitpid(-1, WNOHANG)); $SIG{CHLD} = &REAPER; } $SIG{CHLD} = &REAPER; print "Server ($0) running on port $port...n"; while (my $connection = $server->accept) { if (my $pid = fork){ handle_connection($connection,$$); } } $server->close();
  • 26. IPC • pipe READHANDLE,WRITEHANDLE • Opens a pair of connected pipes like the corresponding system call. • Perl's pipes use IO buffering, so you may need to set $| to flush your WRITEHANDLE after each command, depending on the application. pipe (READ, WRITE); select WRITE; $| = 1; #...
  • 27. IPC • system PROGRAM LIST • exactly the same thing as exec LIST , except that a fork is done first, and the parent process waits for the child process to complete • The return value is the exit status of the program as returned by the wait call • see perlfunc/system
  • 28. IPC • open open(MAIL, "|/usr/lib/sendmail -oi -t") or die "can't fork sendmail: $!"; print MAIL <<EOF; From: $0 To: you@example.com Subject: blah EOF close(MAIL)
  • 29. Processes and threads • Ressources • Professional Perl Programming (Chapter 22 – Creating and Managing Processes) • perldoc perlthrtut • http://en.wikipedia.org/wiki/Process_%28computing%29 • http://en.wikipedia.org/wiki/Thread_%28computer_science%29 • http://gauss.ececs.uc.edu/Users/Franco/ForksThreads/forks.html • perldoc perlipc • perldoc perlfork