2.Perl 多线程:Threads(线程返回值)

 1 use warnings;
 2 use strict;
 3 use threads;
 4
 5 sub TEST{
 6     print "Hello, World!\n";
 7     return (qw/1 2 3 4 ‘a‘/);
 8 }
 9
10 #返回列表方法1
11 my ($t1) = threads->new(‘TEST‘);
12 print $t1->join, "\n";
13
14 #返回列表方法2
15 #
16 my $t2 = threads->new({‘context‘ => ‘list‘}, ‘TEST‘);
17 print $t2->join, "\n";
18
19 #返回单个值
20 my $t3 = threads->new(‘TEST‘);
21 print $t3->join, "\n";
22 getc();

对于函数调用, 如果要得到返回列表, 你应要用一个@values来获得返回值:

1 #eg.
2 my @values = &test;
3 #如果函数调用中返回列表, 如你用一个$value获得返回值, 应会得到列表的最后一个元素的值
4 #eg.
5 my $value = (1,2,3,4 ‘a‘);
6 print $value;
7 #result:‘a‘
8 #注意, 这跟my $value = 1,2,3,4, ‘a‘;不同
9 #

在多线程中, 想得到线程返回程, 那就调用join方法, 如果没必要获取返回值, 要调用detach方法, 如果两个都不调用, 会得到一个警告。

一般来说, 都应调用join/detach方法。

时间: 2024-12-17 07:17:29

2.Perl 多线程:Threads(线程返回值)的相关文章

Thead线程篇之-----多线程 实现 有返回值的功能

import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class MyCallBack implements Callable<String>{ private String threadName; public MyCallBack() { } public MyCallBack(S

Java多线程和并发(四),线程返回值获取方式和Callable接口

目录 1.主线程等待法 2.使用Thread类的join()阻塞当前线程,等待子线程执行完毕 3.通过Callable接口实现:通过FutureTask Or线程池获取 四.线程返回值获取方式和Callable接口 1.主线程等待法 public class CycleWait implements Runnable{ private String value; @Override public void run() { try { Thread.currentThread().sleep(50

Android平台调用Web Service:线程返回值

接上文 前文中的遗留问题 对于Java多线程的理解,我以前仅仅局限于实现Runnable接口或者继承Thread类,然后重写run()方法,最后start()调用就算完事,但是一旦涉及死锁以及对共享资源的访问和随时监控线程的状态和执行顺序和线程返回值等就不行了. Callable 和 Future 简介 Callable接口代表一段可以调用并返回结果的代码;Future接口表示是执行异步任务时的状态.返回值等信息.所以说Callable用于产生结果,Future用于获取结果. 1. Callab

java 线程返回值,优先级,后台线程 示例代码

ava 线程返回值,休眠,优先级,后台线程  示例代码 package org.rui.thread.basic; import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Execu

java线程返回值讨论

java线程返回值讨论在线程当中,返回值是个很大的问题.比如:在线程执行到某一步的时候要将数据返回,在程序执行完成后要返回值.在java中,线程的返回值可以使用Future<T>来获取,也可以使用其他的手段.以下讨论一些返回值的一些小手段:1.使用静态变量来进行值的返回使用静态变量来进行值的返回是最简单的一种,也是不可取的一种,这种不仅带来线程的安全性,同时内存一直不能释放,直到系统退出才能释放内存,因此会造成内存花费很多,但是真正在使用的很少.2.使用Futuren<T>来获取这

【多线程】让线程返回值

很多时候,我们使用线程去处理一些业务,并希望得到结果,这时候,我们可以使用Callable. 下面例子,模拟使用线程查询DB得到一个List. 例子 线程,返回一个List数据 package com.nicchagil.study.thread.cnblogs.No02可返回值的线程; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import

python通过多线程并获取返回值

以下是多线程获取返回值的一种实现方式 # -*-coding:utf-8-*- from time import ctime, sleep import threading import numpy as np import collections loops = ['广州', '北京'] t_list = ['01', '02', '03'] cldas_sum = collections.deque() class MyThread(threading.Thread): def __init

C#秘密武器之多线程——参数与返回值

概述 线程函数要么没有参数,要么只能有一个object参数,而且均没有返回值,这样就大大降低了程序的灵活性,其实我们想要的是能像普通方法一样正常使用参数和返回值!能不能实现这个需求呢?下面就介绍两种方法 一.添加外壳方法 原理:把参数传递变成了对变量的调用 方法:定义一个专门的线程类. 1.需要向线程传递的参数和返回值作为类的公共属性: 2.线程函数的真正方法也放在该类里边 3.加壳的线程函数也放在里边(真正调用的是2的方法) public class MyThread { public dou

Callable 获取线程返回值

allable与 Future 两功能是Java在后续版本中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务. Callable的接口定义如下: public interface Callable<V> { V   call()   throws Exception; } Callable和Runnable的区别如下: I    Callable定义的方法是call,而Runnable定义的