aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/util
diff options
context:
space:
mode:
authorGravatar Nathan Harmata <nharmata@google.com>2016-11-14 19:55:50 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-11-15 15:59:08 +0000
commit5bd26b24a643432c962b6256876b6729199c03d9 (patch)
tree9475e4cbc373a57504c41812e4cd593a7cc7d84e /src/main/java/com/google/devtools/build/lib/util
parentb7eeaa37705c7f4282d0c9bd654fb2540c361d7a (diff)
Make TargetPattern evaluation during query evaluation more parallel-friendly by introducing TargetPattern#parEval, which allows TargetPatterns' evaluations to explicitly have parallel implementations (no need to secretly use a FJP).
-- MOS_MIGRATED_REVID=139101922
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/util')
-rw-r--r--src/main/java/com/google/devtools/build/lib/util/SynchronizedBatchCallback.java33
-rw-r--r--src/main/java/com/google/devtools/build/lib/util/ThreadSafeBatchCallback.java21
2 files changed, 54 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/util/SynchronizedBatchCallback.java b/src/main/java/com/google/devtools/build/lib/util/SynchronizedBatchCallback.java
new file mode 100644
index 0000000000..ec7bd17a5d
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/util/SynchronizedBatchCallback.java
@@ -0,0 +1,33 @@
+// Copyright 2016 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.util;
+
+/**
+ * A {@link ThreadSafeBatchCallback} that trivially delegates to a {@link BatchCallback} in a
+ * synchronized manner.
+ */
+public class SynchronizedBatchCallback<T, E extends Exception>
+ implements ThreadSafeBatchCallback<T, E> {
+ private final BatchCallback<T, E> delegate;
+
+ public SynchronizedBatchCallback(BatchCallback<T, E> delegate) {
+ this.delegate = delegate;
+ }
+
+ @Override
+ public synchronized void process(Iterable<T> partialResult) throws E, InterruptedException {
+ delegate.process(partialResult);
+ }
+}
+
diff --git a/src/main/java/com/google/devtools/build/lib/util/ThreadSafeBatchCallback.java b/src/main/java/com/google/devtools/build/lib/util/ThreadSafeBatchCallback.java
new file mode 100644
index 0000000000..2fed9cc292
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/util/ThreadSafeBatchCallback.java
@@ -0,0 +1,21 @@
+// Copyright 2016 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.util;
+
+import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
+
+/** Marker interface for a {@link BatchCallback} that is {@link ThreadSafe}. */
+@ThreadSafe
+public interface ThreadSafeBatchCallback<T, E extends Exception> extends BatchCallback<T, E> {
+} \ No newline at end of file